好吧,我只是想知道值 x 是否不在我的数组中
这就是我一直在尝试的 我正在使用 VB.net 只需知道 x 何时不在数组中,以便我可以采取行动。谢谢
Dim L, Path(0) As Integer
Open = cleara(Open)
sealed = cleara(sealed)
Open(0) = Agent
sealed(0) = Agent
Finds adjacent nodes
L = Agent
Do Until sealed(sealed.GetLength(0) - 1) = Targ Or Open.GetLength(0) = 0
'Agents(0) = L
H = Find_H(L, Targ, Open)
'T = Find_T(L, Targ, Open)
ReDim F(T.GetLength(0) - 1)
For lp As Integer = 0 To F.GetLength(0) - 1
F(lp) = H(lp) '+ H(lp)
Next
L = Find_lowest(F, Open)
Open = Remove_from(Open, L)
sealed = Add_to(sealed, L)
Ad = Find_adjacent(L, Targ)
For lp As Integer = 0 To Ad.GetLength(0) - 1
好吧,这就是我的问题所在 我需要做的是 查明广告是否密封 如果是则忽略它 如果广告不是密封的,如果是开放的,则比较 T 值 如果广告处于密封或打开状态,则将其添加到打开状态并将 L 设置为广告的父级 下面是测试并查看值是否正确加载到数组中的方法
If Walk(Ad(lp)) <> -1 Then
Parents(Ad(lp)) = L
Open = Add_to(Open, Ad(lp))
For lp2 As Integer = 0 To sealed.GetLength(0) - 1
For lp3 As Integer = 0 To Open.GetLength(0) - 1
If lp3 < Open.GetLength(0) - 1 Then
If Open(lp3) = sealed(lp2) Then
Open = Remove_from(Open, sealed(lp2))
End If
End If
Next
Next
End If
Next
G.Graphics.DrawRectangle(Pens.White, Grid(Targ))
TempDrawing()
Loop
这应该是一个a*程序,但我的启发法一直遇到麻烦,如果你能告诉我我做错了什么,这也会有很大的帮助
到目前为止,这是如何工作的
- 添加我的打开位置
- 为打开列表中的项目创建 H、G、F
- 找到最低的 F
- 查找相邻节点
- 循环节点
- 如果节点不可步行则忽略
- 如果处于密封状态,请忽略(这就是我陷入的困境)
- 如果不是密封的并且可以步行,那么如果是开放的,则比较 G 分数,否则添加到开放的位置
最佳答案
试试这个
If Array.IndexOf(yourArray, x) == -1 Then
'Do something
End If
关于vb.net - 如何判断某个项目是否不在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5361481/