开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
VS2015
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
无
问题(Question):
目前已经完成 "已知起点和终点的座标位置" 的走迷宫
但若是一开始老鼠走的时候 起点已知 可是 "终点未知"的情况呢?
喂入的资料(Input):
EEEEOO
OEOEEE
GEEEOE
OOEOOE
EEEOOO
OOEEEE
G代表终点(但老鼠一开始未知其座标)
O代表墙壁
E代表可通行路径
R代表已完成之正确路径
预期的正确结果(Expected Output):
RRRROO
OEOREE
GRRROE
OOEOOE
EEEOOO
OOEEEE
程式码(Code):(请善用置底文网页, 记得排版)
Point pt(int x, int y) {
Point p = { x, y };
return p;
}
//pt的功用是储存x y整数
char pathA(char maze[7][7], Point start, Point end) {
if (maze[start.x][start.y] == 'E') {
maze[start.x][start.y] = 'R';
if (maze[end.x][end.y] == 'E' &&
!(pathA(maze, pt(start.x, start.y + 1), end) != 'E' ||
pathA(maze, pt(start.x + 1, start.y), end) != 'E' ||
pathA(maze, pt(start.x, start.y - 1), end) != 'E' ||
pathA(maze, pt(start.x - 1, start.y), end) != 'E')) {
maze[start.x][start.y] = 'E';
} //内圈if
} //外圈if
return maze[end.x][end.y];
}
呼叫范例 pathA(f1, pt(1, 0), pt(6, 5));
意思就是 起点由(1,0)开始 终点座标为(6,5)
但若要改成找到G才停的话(且G座标一开始未知) 逻辑判断要怎么改呢?
基本上若终点未知,end这个变量就不会使用到
想法是maze[start.x][start.y]=='G'时就停止
小弟我试很久都没有办法 最多就走到第一列就结束了
麻烦大家了 谢谢!