我晕了.到底有没有高手了!!!!!!!!

yhindex yhindex 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区


RT.
ab(0) = "牧野草原00,牧野草原01,牧野草原05,牧野草原07"
ab(1) = "牧野草原01,牧野草原00,牧野草原02"
ab(2) = "牧野草原02,牧野草原01,牧野草原12,牧野草原13"
ab(3) = "牧野草原03,牧野草原14,村口"
ab(4) = "牧野草原04,牧野草原06,牧野草原08,牧野草原10"
ab(5) = "牧野草原05,牧野草原00,牧野草原06"
ab(6) = "牧野草原06,牧野草原04,牧野草原05,万马草原_03"
ab(7) = "牧野草原07,牧野草原00,牧野草原10"
ab(8) = "牧野草原08,牧野草原04,牧野草原15,牧野草原16"
ab(9) = "牧野草原09,牧野草原22,牧野草原23"
ab(10) = "牧野草原10,牧野草原04,牧野草原07,牧野草原11"
ab(11) = "牧野草原11,牧野草原10,牧野草原12"
ab(12) = "牧野草原12,牧野草原11,牧野草原13"
ab(13) = "牧野草原13,牧野草原12,牧野草原14,牧野草原02"
ab(14) = "牧野草原14,牧野草原03,牧野草原13,牧野草原18"
ab(15) = "牧野草原15,牧野草原18,牧野草原20"
ab(16) = "牧野草原16,牧野草原18,牧野草原20"
ab(17) = "牧野草原17,牧野草原12,牧野草原24"
ab(18) = "牧野草原18,牧野草原14,牧野草原24"
ab(19) = "牧野草原20,牧野草原15,牧野草原16,牧野草原26"
ab(20) = "牧野草原21,牧野草原22,牧野草原26"
ab(21) = "牧野草原22,牧野草原21,牧野草原32"
ab(22) = "牧野草原23,牧野草原09,牧野草原24,牧野草原33"
ab(23) = "牧野草原24,牧野草原17,牧野草原18,牧野草原23"
ab(24) = "牧野草原26,牧野草原20,牧野草原21,牧野草原30"
ab(25) = "牧野草原27,牧野草原25,牧野草原34"
ab(26) = "牧野草原28,牧野草原25,牧野草原34,牧野草原35"
ab(27) = "牧野草原30,牧野草原26,牧野草原31"
ab(28) = "牧野草原31,牧野草原30,牧野草原32"
ab(29) = "牧野草原32,牧野草原22,牧野草原31,牧野草原33"
ab(30) = "牧野草原33,牧野草原23,牧野草原32,牧野草原36"
ab(31) = "牧野草原34,牧野草原27,牧野草原28,牧野草原36"
ab(32) = "牧野草原35,牧野草原28,低矮林地"
ab(33) = "牧野草原36,牧野草原33,牧野草原34"
ab(34) = "万马草原_03,牧野草原06"
ab(35) = "低矮林地,牧野草原28"
上面是一个游戏中的地图的数据。地图一共有36个点,放在ab数组中,
split(ab(i),",")(0)是它的父结点,split(ab(i),",")(1-结束) 是它可以走到的临点,

问题是,我在这个图的任一点(StartWay)到结束的任何一点(EndWay),最近的一种走法,每次只能走一个点
问题补充:帮帮啦。OK再送50分

比如我现在的位置在 牧野草原04 即位置在ab(04)中
ab(4)(0)是点的位置,即 牧野草原04 它的临点,牧野草原06,牧野草原08,牧野草原10
也就是说。我在04可以走到06,08,10


这个函数可以取出,现在的位置所在,数组的第几位

Function ArrId(tem) As Integer
ArrId = -1
For ArrId_i = 0 To UBound(ab)
If Split(ab(ArrId_i), ",")(0) = tem Then
ArrId = ArrId_i
Exit For
End If
Next
End Function


个人对广度优先算法的理解是每次优先遍历父结点下的直接子结点,遍历完这些直接子结点之后再从这些子结点开始遍历他们的直接子结点,以此类推下去,直到找到终点。所以,此处肯定是需要使用到迭代了。在此我想写出我的思路来与楼主交流下。
1.确定startway点和endway点以后,找到startway点,并对该点下的子结点进行遍历。如你此处选择的startway是牧野草原04 即位置在ab(04),endway是牧野草原15,那么ab(04)下的直接子结点可认为是牧野草原06、牧野草原08和牧野草原10。我们开始按照广度优先算法遍历到牧野草原15。
2.首先我们遍历完04的子结点(06,08,10),发现没有15。
3.接下来我们遍历结点06的子结点(04,05,03),发现没有15.
4.然后,我们开始遍历结点08的子结点(4,15,16),发现15,于是整个遍历结束。
PS:对于回路的子结点不应该考虑遍历,比如06中04的回路。


麻烦各位。给写一下。
...全文
评论 12
收藏 已收藏
分享
返回顶部
yhindex
VB基础类 7,788 成员 197,583 内容