- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我们有 N x N 雷区(2d 数组),地雷所在的坐标在另一个 M x 2 数组中给出。在雷区不踩地雷的情况下,找到从左上角到右下角的最短路径的最佳算法是什么?
最佳答案
这是一个 shortest path problem , 并且可以通过将问题减少到 graph 来解决:
G=(V,E)
V = { (x,y) | for all x,y such that (x,y) is not a mine }
E = { ((x1,y1),(x2,y2)) | (x1,y1) is adjacent to (x2,y2) }
现在有了图,您需要应用一些最短路径算法。
如果您没有经验,我会从 BFS 开始,然后再转向更高级的算法。
在伪代码中:
BFS(x_source,y_source, x_target,y_target):
queue = empty new queue
queue.add(Pair(x_source,y_source))
parent= new dictionary
parent.add(source, None)
while (queue.empty() == false):
curr = queue.dequeue()
currX = curr.first
currY = curr.second
if (currX == x_target && currY == y_target)
return getPath(dict, curr)
for each neighbor u of curr: //u is a pair of (x,y) coordinates of adjacent cell
if u is not a key in parent:
parent[u] = curr
queue.add(u)
上面的BFS填充了parent
字典,路径由下面的getPath()函数返回,基本上是遍历字典,直到找到“root”(也就是原来的源节点) ).
getPath(dict, target):
sol = [] //empty list
curr = target
while curr != None:
sol.addFirst(curr)
curr = dict.get(curr)
关于java - 有障碍物的最短路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29247016/
我有一个程序可以检查距离以及玩家是否与障碍物发生碰撞。我现在尝试计算障碍数组中的哪个障碍最接近移动的玩家,然后返回该障碍的索引。 这是我到目前为止所拥有的: public static int
我尝试在 Unity 中创建 RTS 游戏,但在寻路方面遇到问题。我使用 NavMesh 进行寻路,效果很好:单位避免静态对象。但单位不会互相回避。有一个名为 NavMesh Obstacle 的组件
import math import random import pygame from pygame.locals import * import sys def events(): for
新程序员在我的腰带下使用了三个月的 Python(只有几周的 pygame)...... 我正在设计一个 2-D、自上而下的游戏,并且一直在尝试设置障碍来打破 sprite LOS。我目前的尝试是让每
我有一个数据框,其中存储的不是预期的数值“Object”类型的数据看起来像 3 014.0,即“3\xa0014.0”,而不是 3014.0 - 空格(即“\xa0”) - 造成转换问题 问题:有什么
我是一名优秀的程序员,十分优秀!