ZWK so lazy
2015-06-10 14:43
295 查看
Description:
ZWK很懒每次从某个点到哪个点都会去计算下步数,想知道最短需要多少步,简单的来说就是在一个N*M的矩阵,用‘S’表示起始点,‘E’表示终点,’.‘表示可以走的路,'#'表示障碍,求S到E的最短步数,EOF表示结束
Input:
第一行输入n,m
然后输入N*M矩阵
Output:
输出最短的步数
Sample Input:
Sample Output:
ZWK很懒每次从某个点到哪个点都会去计算下步数,想知道最短需要多少步,简单的来说就是在一个N*M的矩阵,用‘S’表示起始点,‘E’表示终点,’.‘表示可以走的路,'#'表示障碍,求S到E的最短步数,EOF表示结束
Input:
第一行输入n,m
然后输入N*M矩阵
Output:
输出最短的步数
Sample Input:
3 3 S.. ... ..E
Sample Output:
4 // ZWK SO LAZY.cpp : 定义控制台应用程序的入口点。 // #include<stdlib.h> #include<math.h> #include<stdio.h> #define N 105 #define min(x,y) (x<y?x:y) char map ; int vis ; int n,m,minz=999999; int step[4][2]={{1,0},{-1,0},{0,1},{0,-1}}; int check(int x,int y) { if((x>=0&&x<n)&&(y>=0&&y<m)) return 1; return 0; } int DFS(int x,int y,int dp) { int i,j; if(map[x][y]=='E') { minz=min(minz,dp); return 1; } for(i=0;i<4;i++) { int tmpx,tmpy; tmpx=x+step[i][0]; tmpy=y+step[i][1]; if(map[tmpx][tmpy]=='#') continue; if(check(x,y)==1&&vis[tmpx][tmpy]==0) { vis[tmpx][tmpy]=1; DFS(tmpx,tmpy,dp+1); vis[tmpx][tmpy]=0; } } return 0; } int main() { int x,y,i,j; while(scanf("%d%d",&n,&m)!=EOF) { x=y=minz=999999; for(i=0;i<n;i++) scanf("%s",map[i]); for(i=0;i<n;i++) for(j=0;j<m;j++) vis[i][j]=0; for(i=0;i<n;i++) { if(x!=minz&&y!=minz) break; for(j=0;j<m;j++) { if(map[i][j]=='S') { x=i,y=j; break; } } } DFS(x,y,0); if(minz==999999) printf("%d\n",0); else printf("%d\n",minz); } return 0; }
相关文章推荐
- android 网络运营商的名字显示规则(锁定屏幕,下拉列表)
- MapReduce编程
- python类型比较的方式
- linux下svn不能连接Windows SVN服务器
- startup migrate、startup upgrade区别以及Oracle打补丁集文档(转)
- 卸载Linux上默认的JDK
- 去除中国菜刀密码的方法
- 几种常见的动画
- HTML特殊字符过滤器
- [***]在Unity 脚本中的作用 C#
- JavaScript var关键字、变量的状态、异常处理、命名规范等介绍
- _itoa atoi、atof、itoa、itow _itoa_s 类型转换使用说明
- jquery实现网页自动添加必填项图标和日期自动填充
- 编译原理 龙书 第二章 一个简单的算术式(+,-)翻译器实现
- JavaScript function函数种类
- vs2010解决提示“一个或多个多重定义的符号“这种错误
- cocox2d-x HelloWorld分析
- JAVA数据结构之String、StringBuffer和StringBuilder之间的区别
- 求笛卡尔积
- 进程间通信--------有名管道如何产生阻塞