迷宫问题,用栈,用C语言

最好能在Dev-c+上运行,求助呀... 最好能在Dev-c+上运行,求助呀 展开
 我来答
448016964
2013-12-11 · TA获得超过272个赞
知道小有建树答主
回答量:241
采纳率:0%
帮助的人:51.8万
展开全部
这个是我写的一个迷宫最短路径的一个例子:广搜
#include<stdio.h>
#include<queue>
using namespace std;
struct node
{
int x,y;
};
int map[5][5],vis[5][5];
node root[30];
int rn,f;
int dir[4][2]={-1,0,0,1,1,0,0,-1};
void bfs(int i,int j)
{
node cur,next;
queue<node>q;
cur.x=i;
int k;
cur.y=j;
memset(vis,-1,sizeof(vis));
vis[i][j]=0;
q.push(cur);
while(!q.empty())
{
cur=q.front();
q.pop();
for(k=0;k<4;k++)
{
next.x=cur.x+dir[k][0];
next.y=cur.y+dir[k][1];
if(next.x>=0&&next.x<5&&next.y>=0&&next.y<5)
{
if(map[next.x][next.y]==1) continue;
if(vis[next.x][next.y]==-1)
{
vis[next.x][next.y]=vis[cur.x][cur.y]+1;
q.push(next);
}
}
}
}
}
void dfs(int i,int j)
{
root[rn].x=i;
root[rn].y=j;
rn++;
if(i==0&&j==0)
{
f=1;
return;
}
int k,ii,jj;
for(k=0;k<4;k++)
{
ii=i+dir[k][0];
jj=j+dir[k][1];
if(ii>=0&&ii<5&&jj>=0&&jj<5)
{
if(vis[ii][jj]==(vis[i][j]-1))
dfs(ii,jj);
}
if(f)
return;
}

}
int main()
{
int i,j;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&map[i][j]);
bfs(0,0);
rn=0;
f=0;
dfs(4,4);
for(i=rn-1;i>=0;i--)
{
printf("(%d, %d)\n",root[i].x,root[i].y);
}
return 0;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cqpcy
2013-12-11 · TA获得超过658个赞
知道小有建树答主
回答量:746
采纳率:66%
帮助的人:359万
展开全部
曾经用纯c写过一个出入栈找迷宫,放在家里电脑了。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式