
C语言:迷宫,求程序,快哭了!好虐。。。
在N*N的迷宫内,“#”为墙,“.”为路,“s”为起点,“e”为终点,一共4个方向可以走。从左上角((0,0)“s”)位置处走到右下角((n-1,n-1)“e”)位置处,...
在N*N的迷宫内,“#”为墙,“.”为路,“s”为起点,“e”为终点,一共4个方向可以走。从左上角((0,0)“s”)位置处走到右下角((n-1,n-1)“e”)位置处,可以走通则输出YES,不可以走则输出NO。
关于输入:
输入的第一行为一个整数m,表示迷宫的数量。
其后每个迷宫数据的第一行为一个整数n(n≤16),表示迷宫的边长,接下来的n行每行n个字符,字符之间没有空格分隔。
关于输出:输出有m行,每行对应的迷宫能走,则输出YES,否则输出NO。、
例子输入:
1
7
s...##.
.#.....
.......
..#....
..#...#
###...#
......e
例子输出:
YES 展开
关于输入:
输入的第一行为一个整数m,表示迷宫的数量。
其后每个迷宫数据的第一行为一个整数n(n≤16),表示迷宫的边长,接下来的n行每行n个字符,字符之间没有空格分隔。
关于输出:输出有m行,每行对应的迷宫能走,则输出YES,否则输出NO。、
例子输入:
1
7
s...##.
.#.....
.......
..#....
..#...#
###...#
......e
例子输出:
YES 展开
5个回答
展开全部
输入这段就不用写了吧。比较简单
A 输入迷宫
用2维数组把这个 迷宫存下来就行了。 墙用0表示 路用1表示。 或者直接用字符的2维数组也行。设为公共变量 migong[m][m] 用公共变量存 m
B 走通判定 (这里以一个迷宫为例,多个迷宫的话 输入那边处理一下就好了,反正中心思想就是1个迷宫用一个2维数组存)
是否能走通的判定。 用迭代法
1 判定周围是否有e(因为e在右下角 只用判断下方和右方就可以了)
2 没有向右走
3 右是墙的话向下走
4 下是墙的话向左走
5 左是墙的话向上走。
bool findway(int startx,int,starty)
{
int end = m - 1;
if(x + 1 == end && y == end || x == end && y + 1 == end )
{
return true; //可以走通 返回YES
}
else if (x + 1 < end && migong[x + 1][y] != '#') //当前点不处于最右侧 且右侧点不为墙的时候
{
findway(startx + 1,starty); //右移
}
else if(y + 1 < end && migong[x][y+1] !='#' ) //当前点不处于最下侧 且下侧点不为墙的时候
{
findway(startx,starty + 1); //下移
}
............................//按照这个思路做 以下省略
}
然后主函数中调用 findway(0,0) 就OK了。
写得比较简单,不好意思。
A 输入迷宫
用2维数组把这个 迷宫存下来就行了。 墙用0表示 路用1表示。 或者直接用字符的2维数组也行。设为公共变量 migong[m][m] 用公共变量存 m
B 走通判定 (这里以一个迷宫为例,多个迷宫的话 输入那边处理一下就好了,反正中心思想就是1个迷宫用一个2维数组存)
是否能走通的判定。 用迭代法
1 判定周围是否有e(因为e在右下角 只用判断下方和右方就可以了)
2 没有向右走
3 右是墙的话向下走
4 下是墙的话向左走
5 左是墙的话向上走。
bool findway(int startx,int,starty)
{
int end = m - 1;
if(x + 1 == end && y == end || x == end && y + 1 == end )
{
return true; //可以走通 返回YES
}
else if (x + 1 < end && migong[x + 1][y] != '#') //当前点不处于最右侧 且右侧点不为墙的时候
{
findway(startx + 1,starty); //右移
}
else if(y + 1 < end && migong[x][y+1] !='#' ) //当前点不处于最下侧 且下侧点不为墙的时候
{
findway(startx,starty + 1); //下移
}
............................//按照这个思路做 以下省略
}
然后主函数中调用 findway(0,0) 就OK了。
写得比较简单,不好意思。
展开全部
你看我自创的一个学迷宫的,比较简单,帮顶出去咯!
http://wenku.baidu.com/view/41fc88245901020207409c43?fr=prin
http://wenku.baidu.com/view/41fc88245901020207409c43?fr=prin
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我自己写了一个 但是是没有墙壁的~ 还有就是得手工初始化不能走的地方~ 最后得到的结果是直接输出走的处的路线 否则不输出~ 你要不嘛
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
百度一下,都有源代码的,参考一下就知道怎么做了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询