我有这个“测试”让我们说..我需要解决这个问题,这不是家庭作业,但我需要它才能通过测试。
我可能需要一点帮助,因为我不明白我需要做什么。 我需要这里的算法! 事情是这样的: 下表代表了一个迷宫。 “1”表示不能通过该值,“0”表示可以通过该值。 “T”是获得的宝物,“H”是入口。 坐标是:H(3.1),T(2.8)。
-我需要一个程序来读取矩阵 A[1..M,1..N],它本身代表一个包含元素 [0,1] 的迷宫,并且还读取 H、T 值。
它应该打印一条通往宝藏的路,如果有的话,它应该说“No way to the treasure”他的矩阵是:
1 1 1 1 1 1 1 1 1 1
1 1 0 0 0 1 0 T 0 1
H 0 0 1 1 1 0 1 1 1
1 1 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1
最佳答案
使用 Wall Follower方法。您需要有一个变量来存储您正在查看的方向(左、右、上、下)。然后你继续朝那个方向前进,直到你撞到墙上。当你在墙上时,你一直向左转,直到你可以继续走。这样做直到达到目标。
或者伪代码:
var walkingDirection = up;
while (not at target)
if (next field in walkingDirection is not a wall)
go to next field in walkingDirection
else
turn right
end if
end while
然而,这在不是简单连接的迷宫中会失败(阅读该链接)。
另一种稍微困难的方法可能是 A* algorithm .
关于c - 构建一个读取数组的c程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15644009/