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
展开
 我来答
小方方dV
2012-12-19 · TA获得超过169个赞
知道小有建树答主
回答量:160
采纳率:100%
帮助的人:102万
展开全部
输入这段就不用写了吧。比较简单

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了。

写得比较简单,不好意思。
羽天下羽毛球
2012-12-20
知道答主
回答量:6
采纳率:0%
帮助的人:5083
展开全部
你看我自创的一个学迷宫的,比较简单,帮顶出去咯!
http://wenku.baidu.com/view/41fc88245901020207409c43?fr=prin
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
handsomeboy9
2012-12-20
知道答主
回答量:52
采纳率:0%
帮助的人:10.9万
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
无人学cYa86
2012-12-20 · 超过11用户采纳过TA的回答
知道答主
回答量:40
采纳率:100%
帮助的人:30.5万
展开全部
我自己写了一个 但是是没有墙壁的~ 还有就是得手工初始化不能走的地方~ 最后得到的结果是直接输出走的处的路线 否则不输出~ 你要不嘛
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
永若灵0j03c0
2012-12-20 · TA获得超过130个赞
知道小有建树答主
回答量:190
采纳率:0%
帮助的人:91.5万
展开全部
百度一下,都有源代码的,参考一下就知道怎么做了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式