迷宫问题

Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Other)
Total Submission(s) : 46   Accepted Submission(s) : 28
Problem Description
定义一个二维数组:

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表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。

 
Input
一个5 × 5的二维数组,表示一个迷宫。数据保证有唯一解。
 
Output
左上角到右下角的最短路径,格式如样例所示。
 
Sample Input
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
 
Sample Output
(0, 0)
(1, 0)
(2, 0)
(2, 1)
(2, 2)
(2, 3)
(2, 4)
(3, 4)
(4, 4)
 
/*将表格排序,第一行为0,1,2,3,4第二行5,6,7,8,9,规则就是5*横坐标+纵坐标,得到的数除以五
得到横坐标,对五取余得到纵坐标,用数组的下标来记录这些数,数组里记录上一个数的下标,
方便查找,而第一个数存的是-1,表示结束*/
#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
int map[5][5],vis[30],pre[30];
int dx[4]={1,0,0,-1};
int dy[4]={0,1,-1,0};
void pr(int ans)
{
/*for(int i=0;i<30;i++)
printf("%d \n",pre[i]);*/
if(pre[ans]!=-1)/*从终点往回找,找到起点时开始输出*/
pr(pre[ans]);
printf("(%d, %d)\n",ans/5,ans%5);
}
int judge(int x,int y)
{
if(x<0||x>4||y<0||y>4)
return 0;
if(map[x][y]==1)
return 0;
return 1;
}
void bfs()
{
queue<int>q;
memset(vis,0,sizeof(vis));
pre[0]=-1;
vis[0]=1;/*标记已经使用过*/
q.push(0);
int now,next;
int x,y,nx,ny;
while(!q.empty())
{
now=q.front();
q.pop();
x=now/5;/*调用坐标*/
y=now%5;
for(int i=0;i<4;i++)
{
nx=x+dx[i];
ny=y+dy[i];
next=nx*5+ny;
if(judge(nx,ny)&&!vis[next])
{
pre[next]=now;
if(next==24)
return ;/*当查询到最后一个点时,结束*/
q.push(next);
vis[next]=1;
}
}
}
}
int main()
{
int i,j;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&map[i][j]);
/*for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%d ",map[i][j]);
printf("\n");
}/*输出一遍表,看有没有输入错误*/
bfs();
pr(24);/*从最后一个点往回找*/
return 0;
}

最新文章

  1. [译]ZOOKEEPER RECIPES-Queues
  2. springmvc项目中java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
  3. 去除GHOST版系统自带的2345流氓软件
  4. LeetCode Maximum Subarray (最大子段和)
  5. MYSQL- 存储过程示例
  6. 利用Testng注释实现多线程并发测试
  7. Java序列化技术
  8. padding与margin的差别
  9. WOJ 1020
  10. C#实现异步消息队列
  11. ABP日志管理
  12. COCOS2D-JS入门-官网template源码解析
  13. STM32F4xx FPU的设置
  14. Pycharm,Python原生IDE?
  15. SqlBulkCopy 参数配置示例
  16. javascript常用的操作
  17. 主流的Nosql数据库的对比
  18. RPC与RMI的区别
  19. Harbor快速部署到Kubernetes集群及登录问题解决
  20. in操作符

热门文章

  1. Django学习案例一(blog):五. 开发主页(博客列表展示)
  2. openMSP430之openmsp430-loader
  3. THREE.js代码备份——webgl - materials - cube refraction [balls](以上下左右前后6张图片构成立体场景、透明球体效果)
  4. MVC返回400 /404/...
  5. 【转载】Java 集合详解
  6. List分组的两种方式
  7. 关于MySQL Server影响ASP.NET网站使用的问题:未能加载文件或程序集MySql.Web.v20
  8. py西游公关之模块
  9. python PIL图像处理-生成图片验证码
  10. Golang - 爬虫案例实践