- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我需要一些帮助来编写一套用于穿越迷宫的 if-then 规则。这是问题所在:
“假设迷宫是在方形单元格的网格上构建的,方法是在单元格的某些边缘放置墙壁,这样从迷宫内的任何单元格到迷宫外边缘都有一条路径没有墙。
一种方法是左手定则,但这种策略可以让您循环往复。
用英文写 if-then 规则,用于穿墙和检测循环。假设您知道网格的大小和逃离迷宫可能需要行驶的最大距离。”
这是我目前所拥有的:
开始
如果只找到一条路径(左或右或直线),则遵循该路径。
否则如果找到多个路径:
如果找到左侧路径,请左转。
否则,如果找到直线路径,则遵循直线路径。
如果找到正确的路径,则右转。
Else 如果发现死胡同,则掉头。
转到第 2 步
结束
但这并没有解决循环问题。有人可以帮忙吗?
最佳答案
有两种用于探索图的通用算法:广度优先搜索 (BFS) 和深度优先搜索 (DFS)。这些算法的诀窍是它们从未探索列表中的所有路径开始,并且当它们访问路径时,它们将这些路径添加到已探索列表中。当您访问每个节点时,您将其从未探索列表中删除,这样您就不会重新访问它。通过在每种情况下仅从未探索的列表中拉出节点,您就不会遇到需要加倍处理自己的情况。
以下是带有检查以防止循环和 BFS 的 DFS 示例:
function DFS(G,v):
label v as explored
for all edges e in G.adjacentEdges(v) do
if edge e is unexplored then
w ← G.adjacentVertex(v,e)
if vertex w is unexplored then
label e as a discovery edge
recursively call DFS(G,w)
else
label e as a back edge
现在 BFS:
procedure BFS(G,v):
create a queue Q
enqueue v onto Q
mark v
while Q is not empty:
t ← Q.dequeue()
if t is what we are looking for:
return t
for all edges e in G.adjacentEdges(t) do
u ← G.adjacentVertex(t,e)
if u is not marked:
mark u
enqueue u onto Q
return none
关于穿越迷宫的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16578041/
在我看来,较新的 Android 设备在 NAT 后面运行,其中本地地址是内部运营商或 LAN 地址,公共(public)地址是路由器或运营商分配的外部地址。 然而,较新的手机不会使用 Network
我已经看到并阅读了很多类似的问题,以及相应的维基百科文章( NAT traversal 、 STUN 、 TURN 、 TCP hole punching ),但是大量的信息并不能真正帮助我我的问题很
您好,我有一个 bmp 加载到 BMP 对象,我需要像上图那样从 (1,1) 像素到 (100,100) px 。使用 getpixel() 方法。我使用的是 ONE 循环,但没有成功。 如果我使用多
我有一个包含类别标题的列表,以及嵌套在这些标题中的元素。如果我这样做 #list .item:nth-child(1):before{content:"1";} 每个类别中的第一项都以 1 为前缀。这
我正在开发一个 P2P 应用程序,我需要使用 STUN 和/或 TURN 进行 NAT 遍历。我已经研究了仅使用 STUN 时出现的问题(基本上它并不总是有效,因为它是基于 UDP 的,有些防火墙不喜
我是菜鸟,开始学习webRTC,最近发现一个叫simplewebrtc的网页,看了demo,但是不明白他们是怎么管理防火墙和NAT穿越的网络,我知道 webRTC 使用 STUN 服务器,但我在 si
我想连接到计算机,每台计算机都在 NAT 路由器后面。我读到 STUN 仅适用于 NAT 路由器后面的一台计算机。真的吗?如果是这样,我该如何解决双 NAT 问题? 谢谢,托马斯 最佳答案 UDP h
根据维基百科文章 Micro Transport Protocol支持使用UDP打洞的NAT穿越。但是看着libutp's project page我在头文件中找不到任何这样的引用。我错过了一些明显的
有没有什么方法可以在具有 3G/4G 连接的 Android 上使用 UPnP 进行 NAT 穿越,如果可以,它是否依赖于运营商? 最佳答案 不,目前你没有办法做到这一点,原因很简单,移动运营商不使用
我是一名优秀的程序员,十分优秀!