poj1573 Robot Motion
来源:互联网 发布:淘宝买摩托车 编辑:程序博客网 时间:2024/05/20 03:40
题目链接:http://poj.org/problem?id=1573
题意:给你一个机器人,给你一张n*m的地图(包括S,N,W,E),告诉你机器人起始位置x(1,x),然后机器人就走这个图,然后有两中情况,走出去了或者走进了循环,就是样例那两种情况,输出结果就对了
解析:模拟题,直接开个vis数组记录,直接模拟就是了
#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <cstring>#include <queue>#include <cmath>#include <map>using namespace std;const int maxn = 1e5+100;const int inf = 0x7ffffff;char a[1005][1005];int vis[1005][1005];int main(void){ int n,m,x; while(~scanf("%d %d",&n,&m)) { if(n==0 && m==0) break; scanf("%d",&x); for(int i=1;i<=n;i++) scanf("%s",a[i]+1); memset(vis,0,sizeof(vis)); for(int i=0;i<=m+1;i++) { vis[0][i] = -1; vis[n+1][i] = -1; } for(int i=0;i<=n+1;i++) { vis[i][0] = -1; vis[i][m+1] = -1; } int dx = 1,dy = x; vis[dx][dy] = 1; while(true) { int tx = dx,ty = dy; if(a[dx][dy]=='S') dx += 1; else if(a[dx][dy]=='E') dy += 1; else if(a[dx][dy]=='W') dy -= 1; else dx -= 1; if(vis[dx][dy]!=0) { if(vis[dx][dy] == -1) printf("%d step(s) to exit\n",vis[tx][ty]); else { int ans1 = vis[tx][ty]; int ans2 = vis[dx][dy]; printf("%d step(s) before a loop of %d step(s)\n",ans2-1,ans1-ans2+1); } break; } vis[dx][dy] = vis[tx][ty]+1; } } return 0;}
0 0
- POJ1573--模拟--Robot Motion
- poj1573 Robot Motion (模拟)
- poj1573 Robot Motion
- poj1573--Robot Motion
- poj1573 Robot Motion
- poj1573 Robot Motion
- POJ1573 - Robot Motion
- POJ1573 Robot Motion(模拟)
- poj1573 Robot Motion
- poj1573 Robot Motion 模拟
- poj1573--Robot Motion
- poj1573 Robot Motion
- POJ1573 Robot Motion
- POJ1573《Robot Motion》方法:模拟
- POJ1573 Robot Motion(dfs)
- POJ1573 Robot Motion 模拟题
- POJ1573--Robot Motion(模拟)
- POJ1573,Robot Motion,模拟水题,繁
- RxJava学习理解
- java 取得当前年月日 注意事项。
- shiro的注解及标签说明
- 高效编程之hashmap你不看就会忘记的知识点
- n皇后问题扩展
- poj1573 Robot Motion
- 故障案例--寻找瓶颈SQL的一种方法
- 垃圾收集算法
- Spring boot maven项目配置文件覆盖问题
- MyBatis根据接口和xml实现Dao功能
- 关于window10和ubuntu16.04系统时间错乱的问题
- CMake使用教程
- STM32F103C8T6 ULN2003步进电机驱动代码
- Java垃圾回收机制