| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1010 人关注过本帖
标题:迷宫求解,但有点问题
只看楼主 加入收藏
学C很多年
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-9-8
收藏
 问题点数:0 回复次数:1 
迷宫求解,但有点问题
迷宫问题求解,我写的程序有问题?本人C才入门 我写了这段程序 但是运行不了 高手请帮忙查查错误
功能是:输入任意大小迷宫,用非递归方法求出一条走出迷宫的路径 并将路径输出
#include"linkstack.cpp"
#include"iostream.h"
struct node
{
int row;
int col;
int dir;
};
void main()
{
const int move[8][2]={{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,1}};
int row=8,col=11,start=1,end=9,i,j,k;
{
cout<<"输入行数和列数:"
cin>>row>>col;
row+=2;col+=2;
cout<<"请一行一行输入迷宫:\n";
for(i=1;i<row-1;i++)
{
cout<<"row"<<i":\t";
for(j=1;j<col-1;j++)
cin>>maze[i][j];
}
cout<<"请输入开始的列号和结束的列号:";
cin>>start>>end;
for(i=0;i<row;i++)
maze[i][0]=maze[i][col-1]=1;
for(i=0;i<col;i++)
maze[0][i]=maze[row-1][i]=1;
}
cout<<"maze:\n";
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
cout<<maze[i][j]<<" ";cout<<"\n";
}
cout<<"\n";
linkstack<node>stack;
node mynode;
mynode.row=1;
mynode.col=start;
mynode.dir=2;
stack.push(mynode);
int g,h,find=0;
while(!stack.isempty()&&!find)
{
stack.pop(mynode);
i=mynode.row;j=mynode.col;k=mynode.dir;
while(k<8)
{
g=i+move[k][0];
h=j+move[k][1];
if(g==row-2&&h==end&&maze[g][h]==0)
{
find=1;
maze[g][h]=2;break;
}
if(maze[g][h]==0)
{
maze[g][h]=2;
mynode.row=g;mynode.col=h;mynode.dir=k;
stack.push(mynode);
i=g;
j=h;
k=0;continue;
}
k=k+1;
}
}
if(find)
{
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
cout<<maze[i][j]<<" ";
cout<<"\n"
}
}
else cout<<"no path!\n";
}
搜索更多相关主题的帖子: 迷宫 int row col 
2006-09-09 09:57
bozl
Rank: 2
等 级:论坛游民
帖 子:49
专家分:53
注 册:2007-10-23
收藏
得分:0 
include"linkstack.cpp"
能不能把linkstack.cpp文件一起发上来看一下..

魔の左手............
神の右手.............
2008-03-27 08:27
快速回复:迷宫求解,但有点问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022491 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved