迷宫问题
来源:互联网 发布:c语言 坏值 编辑:程序博客网 时间:2024/06/06 19:00
int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,};
它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。
0 1 0 0 00 1 0 1 00 0 0 0 00 1 1 1 00 0 0 1 0
(0, 0)(1, 0)(2, 0)(2, 1)(2, 2)(2, 3)(2, 4)(3, 4)(4, 4)
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;
int map[10][10];
int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};
int front=0,rear=1;
struct node{
int x,y,pre;
}q[100];
void print(int i)
{
if(q[i].pre!=-1)
{
print(q[i].pre);
cout<<"("<<q[i].x<<", "<<q[i].y<<")"<<endl;
}
}
void dfs(int x1,int y1)
{
q[front].x=x1;
q[front].y=y1;
q[front].pre=-1;
while(front<rear)
{
int i;
for(i=0;i<4;i++)
{
int a=dx[i]+q[front].x;
int b=dy[i]+q[front].y;
if(a<0 || a>=5 || b<0 || b>=5 || map[a][b])
continue;
else
{
map[a][b]=1;
q[rear].x=a;
q[rear].y=b;
q[rear].pre=front;
rear++;
}
if(a==4 && b==4)
print(front);
}
front++;
}
}
int main()
{
int i,j;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&map[i][j]);
cout<<"(0, 0)"<<endl;
dfs(0,0);
cout<<"(4, 4)"<<endl;
return 0;
}
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题...
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 为什么静态方法不能调用非静态的变量和方法
- NIO(new io简称)
- 链表实现
- 史上最经典的Linux内核学习方法论
- EDA软件_Cadence_Allegro 16.6导入网络表出错分析
- 迷宫问题
- 单例模式
- java快速读写文件和组装字符串
- Android中Activity总结
- 判断当前客户端是否移动设备
- 欢迎使用CSDN-markdown编辑器
- 先在这里立一个flag吧
- 关于for循环迭代一个小问题
- linux select() FD_ZERO/FD_SET/FD_CLRFD_ISSET详解