这道题用c++怎么做

迷宫脱险编程语言:任意;运行时间限制:1000ms;运行空间限制:51200KB;代码长度限制:2000000B试题描述小明不小心掉入了一个迷宫,好在他有迷宫的地图,他可... 迷宫脱险
编程语言:任意;运行时间限制:1000ms; 运行空间限制:51200KB; 代码长度限制:2000000B
试题描述
小明不小心掉入了一个迷宫,好在他有迷宫的地图,他可以朝4个方向走。接下来,由你来确定他最短几步可以逃离迷宫险境。
输入
n和m(3<=n,m<=30),表示迷宫的范围。接下来n行,每行有m个字符,表示该地的属性。’*’可以走,”X”不可走。第n+2行有4个整数x1,y1,x2,y2,分别表示小明的初始位置和终止位置(x是行号y是列号)。
输出
一个整数,表示步数。
输入示例
3 3
***
**X
X**
1 1 3 3

输出示例
4
展开
 我来答
159asa123
2013-05-14 · TA获得超过627个赞
知道答主
回答量:173
采纳率:0%
帮助的人:64.4万
展开全部
我倒有代码过样例,可是莫名其妙,不知为何WA,给你看看吧
#include <cstdlib>
#include <iostream>

using namespace std;
struct migong
{
int heng;
int zong;
int bu;
};
migong bfs[1000];
int bj[31][31];
int main(int argc, char *argv[])
{
int n,m,i,j,x1,x2,y1,y2;
char a[31][31];
cin>>n>>m;
memset(bfs,0,sizeof(bfs));
memset(bj,-1,sizeof(bj));
for (i=0;i<=n+1;i++)
for (j=0;j<=m+1;j++)
a[i][j]='X';
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
cin>>a[i][j];
cin>>x1>>y1;
cin>>x2>>y2;
int w;
i=w=bj[x1][y1]=0;
bfs[0].heng=x1;
bfs[0].zong=y1;
while(i<=w)
{
if (a[bfs[i].heng+1][bfs[i].zong]=='*' && bj[bfs[i].heng+1][bfs[i].zong]==-1)
{
w++;
bfs[w].heng=bfs[i].heng+1;
bfs[w].zong=bfs[i].zong;
bfs[w].bu=bfs[i].bu+1;
bj[bfs[i].heng+1][bfs[i].zong]=bfs[i].bu+1;
}
if (a[bfs[i].heng-1][bfs[i].zong]=='*' && bj[bfs[i].heng-1][bfs[i].zong]==-1)
{
w++;
bfs[w].heng=bfs[i].heng-1;
bfs[w].zong=bfs[i].zong;
bfs[w].bu=bfs[i].bu+1;
bj[bfs[i].heng-1][bfs[i].zong]=bfs[i].bu+1;
}
if (a[bfs[i].heng][bfs[i].zong+1]=='*'&&bj[bfs[i].heng][bfs[i].zong+1]==-1)
{
w++;
bfs[w].heng=bfs[i].heng;
bfs[w].zong=bfs[i].zong+1;
bfs[w].bu=bfs[i].bu+1;
bj[bfs[i].heng][bfs[i].zong+1]=bfs[i].bu+1;
}
if (a[bfs[i].heng][bfs[i].zong-1]=='*'&&bj[bfs[i].heng][bfs[i].zong-1]==-1)
{
w++;
bfs[w].heng=bfs[i].heng;
bfs[w].zong=bfs[i].zong-1;
bfs[w].bu=bfs[i].bu+1;
bj[bfs[i].heng][bfs[i].zong-1]=bfs[i].bu+1;
}
i++;
}
for (i=1;i<=n;i++)
{
for (j=1;j<=m;j++)
cout<<bj[i][j]<<" ";
cout<<endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}
黯湮灬逍遥
2011-07-13 · TA获得超过339个赞
知道小有建树答主
回答量:378
采纳率:0%
帮助的人:313万
展开全部
啊 不好意思啊LZ,ACM太费时间。。。无视我吧 - -||
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiao6774081
2011-07-13 · TA获得超过524个赞
知道小有建树答主
回答量:563
采纳率:0%
帮助的人:125万
展开全部
分太少,不做。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-07-14
展开全部
最短路径,SPF就好了。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhaotianyuan2
2011-07-19 · TA获得超过149个赞
知道小有建树答主
回答量:187
采纳率:0%
帮助的人:113万
展开全部
你码酷上的账号是什么啊?小心让王老师封你号!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式