元旦的作业到现在都没有完成,C++迷宫问题怎么用联通图来求解?

问题描述

元旦的作业到现在都没有完成,C++迷宫问题怎么用联通图来求解?

元旦的作业到现在都没有完成,C++迷宫问题怎么用联通图来求解?

解决方案

 #include<iostream>
#include<fstream>
using namespace std;
struct Move
{
int x;
int y;
}move[4]={{0,1},{1,0},{0,-1},{-1,0}};
bool Mazepath(int **maze,int x,int y,int m,int n);
void Restore(int **maze,int m,int n); //恢复路径
int** GetMaze(int &m,int &n);
int main()
{
int m=0,n=0;
int **maze;
maze=GetMaze(m,n);
if(Mazepath(maze,m,n,1,1))
cout<<"("<<m<<','<<n<<')'<<endl;
else cout<<"No path!/n";
return 0;
}
int** GetMaze(int &m,int &n)
//获取迷宫(可从文件中读取,也可输入)
//返回存取迷宫的二维指针
{
int **maze; //定义二维指针存取迷宫
int i=0,j=0;
char Choose; //定义一个标志,选择读取文件或直接输入,获取迷宫
cout<<"请选择从文件中读取文件(1)或重新输入(2):";
cin>>Choose; //输入标志
if(Choose=='1') //当标志Choose为‘1’时,读取文件
{
char ch; //定义一个字符,读取文件中的内容
i=0,j=0;
//首先得到文件中数字字符的数目,并得到迷宫的长和宽
ifstream fip("test.txt");
//定义一个文件对象,并打开文件“test.txt”
while(fip.get(ch)) //从读取文件中内容(一个个字符)
{
if(ch>='0'&&ch<='9') //获取文件中的数字字符
{
j++; //如果是字符,宽就加1
}
if(ch=='/n')
{
i++; //如果是换行,就行加1
n=j; //得到宽,即列数
j=0;
}
}
fip.close(); //读取文件结束
m=i; //得到长即行数
maze=new int *[m+2]; //申请长度等于行数加2的二级指针
for(i= 0;i<m+2;i++) //申请每个二维指针的空间
{
maze[i]=new int[n+2];
}
i=j=1;
ifstream fip2("test.txt");//重新读取文件,以得到内容
while(fip2.get(ch))
{
if(ch>='0'&&ch<='9')
{
maze[i][j]=ch-'0'; //把数字字符转化为数字,并存到指针里
cout<<maze[i][j]<<" "; //在屏幕中显示迷宫
j++;
}
if(ch=='/n') //遇到换行,指针也相应换行
{
cout<<endl;
i++;
j=1;
}
}
fip2.close(); //读取结束
}
else //Choose=2 ,输入迷宫
{
cout<<"请输入迷宫的长和宽:";
int a,b;
cin>>a>>b; //输入迷宫的长和宽
cout<<"请输入迷宫内容./n";
m=a;
n=b; //m,n分别代表迷宫的行数和列数
maze=new int *[m+2]; //申请长度等于行数加2的二级指针
for(i= 0;i<m+2;i++) //申请每个二维指针的空间
{
maze[i]=new int[n+2];
}
for(i=1;i<=m;i++) //输入迷宫的内容,1代表可通,0代表不通
for(j=1;j<=n;j++)
cin>>maze[i][j];
}
//给迷宫的四周加一堵墙,即把迷宫四周定义为1
for(i=0;i<m+2;i++)
maze[i][0]=maze[i][n+1]=1;
for(i=0;i<n+2;i++)
maze[0][i]=maze[m+1][i]=1;
return maze; //返回存贮迷宫的二维指针maze
}
bool Mazepath(int **maze,int x,int y,int m,int n)
{
int g,h;
if((x==m)&&(y==n)) return true;
for(int loop=0;loop<4;loop++)
{
g=x+move[loop].x;
h=y+move[loop].y;
if(maze[g][h]==0)
{
maze[x][y]=-1;
if(Mazepath(maze,g,h,m,n))
{
cout<<"("<<g<<','<<h<<')'<<endl;
return true;
}
}

Restore(maze,m,n); //恢复路径
}
if((x==1)&&(y==1))
cout<<"路径不存在!/n";
return false; //表示查找失败,即迷宫无路经
}
void Restore(int **maze,int m,int n)
{
int i,j;
for(i=0;i<m+2;i++)
for(j=0;j<n+2;j++)
{
if(maze[i][j]==-1)
maze[i][j]=0;
}
}

http://blog.sina.com.cn/s/blog_9dfc6f5f01015zn5.html

时间: 2024-12-02 20:52:33

元旦的作业到现在都没有完成,C++迷宫问题怎么用联通图来求解?的相关文章

c-写了一个作业程序,能运行,但有时候能用有时不能用,求解。

问题描述 写了一个作业程序,能运行,但有时候能用有时不能用,求解. //判断一个偶数是哪两个素数之和 #include #include int judgement(int num); int main(void) { int INPUT, add1, add2; printf("Please enter a number:"); scanf("%d", &INPUT); add1 = 0; do{ add1++; add2 = INPUT - add1;

针对持续交付管理构建作业

对于不断演进中的产品,持续交付(CD)使其开发到产品交付的过程更加简单.持续集成(CI)位 于持续交付过程的开始阶段,它扮演了这个过程中的重要角色,由它定义软件开发过程. 在书 上和网上可以查到很多持续集成工具的资料,但处于持续集成过程中核心的构建作业却没有太多资料. 典型的持续集成过程如下:开发人员在他们自己的机器上手工构建和测试源代码.然后他们会 把修改提交到一个源码控制管理系统.随后构建工具将运行作业编译和测试这些代码.然后把构建的工 件上传到一个中心资源库,用于接下来的开发和测试. 因此

JAVA大作业做界面问题求助~组件选择

问题描述 大作业要求我简单说一下吧:人流模拟,如图所示,ABCDEFG是建筑,绿色的是道路,红色的点是人,然后就是模拟人流动来动去这样子,但是每个人不是一样的,每个红色的点都有属于他自己的独特属性(懒惰值啊什么的=_=),然后请问一下要用什么组件来定义人(红圆点).道路(绿直线).建筑(蓝矩形)呢??就是我们想要这些人是能够在道路上走路的..或者有什么资料我自己去学也是可以的!!谢谢谢谢谢谢谢!!!>_< 解决方案 解决方案二:java的gui绘图去画每个图案

找到replication相关的作业和sql语句

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; 在排查 replication问题过程中,经常需要为指定的agent添加verbose log.这 首先要找到相关的作业.但在 复杂的replication环境中,一台服务器里包可能含了上百个作业,一个个去点开定义去查看简直就是噩梦. 下面的文章介绍了如何快速定位作业.所有信息都可以在Distributor 服务器里找到,以Merge replication为例子:

贪心-自命题-作业排期

作业排期 某机器上需要处理n个作业,每个作业都有一个收益值p与完成期限d.每个作业均占时1个时间单位. 请你安排作业,得到最大收益. 输入格式 n p0 p1 ... pn (收益值非递减排练) d0 d1 ... dn 输出格式 总收益 作业序列(编号从0开始) 输入样例 6 90 80 50 30 20 10 1 2 1 3 4 3 输出样例 220 [0, 1, 3, 4] 分析:既然每个作业占时都一样,肯定先对收益排个序(此题的数据已帮你排好),能做就做,有冲突放弃.标准的贪心,局部最优

c-用 粒子群优化算法/细菌觅食算法 求解下列方程 C 或者C++语言或者Java都可以!

问题描述 用 粒子群优化算法/细菌觅食算法 求解下列方程 C 或者C++语言或者Java都可以! 使用 粒子群优化算法/细菌觅食算法 求解或者优化下列方程,使用C语言或者C++语言或者Java都可以! 解决方案 http://www.pudn.com/downloads311/sourcecode/math/detail1379743.html 解决方案二: 粒子群优化算法的JAVA实现 解决方案三: http://msdn.microsoft.com/zh-cn/magazine/hh8824

【德国生活】德国IT出马,全天下都汗颜

 Schau mal. Das beruhigt unglaublich. 1.看吧,这真是难以置信.   2. Es ist so schön. 2.它是如此的美丽.   3. All die Kabel. Und so perfekt angeordnet. 3.所有的电线,被如此完美的绑在一起.   4. Beeindruckend. Das ist ein und derselbe Ort. 4.同样的地方,左右两种状况.   5. Die ganze Ordnung ist einfa

在HTML中做好的页面放到aspx中,所有带js的动态的效果都变成静态的了??

问题描述 求解在HTML中做好的页面放到aspx中,所有带js的动态的效果都变成静态的了?? 解决方案 解决方案二:求解,此问题如何能看明白解决方案三:在HTML中做好的页面放到aspx中?你的aspx可能根本没正常动作.还有你是如何访问aspx页面的?是否已经发布到IIS?解决方案四:<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits=&

oncreate-Android onCreate都不执行是什么鬼?真是炸了

问题描述 Android onCreate都不执行是什么鬼?真是炸了 今天本来打算学一下RecyclerView的结果Activitiy都补onCreate了,真是无解,有图有珍惜真像.这个MainActivity这是子Activity1这是子Activity2结果就是Toast都没出来,我把toast放到MainActivity里面试过了,竟然出来了!!!真是无解,难道是人品? 解决方案 这个onCreate的参数和Activity的onCreate的参数不一致,因此不是同一个方法. 解决方案