poj 1573
来源:互联网 发布:telnet 1521端口不通 编辑:程序博客网 时间:2024/05/23 15:50
#include <iostream>#include<cstdio>using namespace std;const int maxn=10+5;typedef pair<int,int>PII;const char *symbol="NSWE";int ans;char maze[maxn][maxn];PII record[200];int loop;int row,colu,pos;bool crash(int nx,int ny){ if(nx<0||nx>=row||ny<0||ny>=colu) return false; for(int i=0;i<ans;i++) if(nx==record[i].first&&ny==record[i].second) { loop=i; return false; } return true;}bool Move(int nx,int ny,int k){ if(k==0) nx--; else if(k==1) nx++; else if(k==2) ny--; else if(k==3) ny++; bool t=crash(nx,ny); if(!t) return false; record[ans++]=PII(nx,ny); return true;}int main(){ while(scanf("%d%d%d",&row,&colu,&pos)==3) { if(row==0&&colu==0&&pos==0) break; loop=-1; ans=0; if(row==0||row==0) printf("0 step(s) to exit\n"); else { for(int i=0;i<200;i++) record[i]=PII(0,0); for(int i=0;i<row;i++) scanf("%s",&maze[i]); record[ans++]=PII(0,pos-1); for(;;) { bool cnt; for(int i=0;i<4;i++) if(maze[record[ans-1].first][record[ans-1].second]==symbol[i]) { cnt=Move(record[ans-1].first,record[ans-1].second,i); break; } if(!cnt) break; } if(loop==-1) printf("%d step(s) to exit\n",ans); else printf("%d step(s) before a loop of %d step(s)\n",loop,ans-loop); } } return 0;}
阅读全文
0 0
- POJ 1573
- POJ 1573
- poj 1573
- poj 1573
- poj 1573
- poj 1573
- poj-1573
- poj 1573
- poj 1573
- poj 1573
- poj 1573
- poj 1573
- poj 1573 Robot Motion
- Poj 1573 Robot Motion
- poj 1573 1321 递归
- poj 1573 Robot Motion
- poj 1573 模拟
- POJ 1573 - Robot Motion
- Codeforces Round #401 (Div. 2) (Virtual participation) 总结
- 初学Java的简单输入输出
- 用Python实现BubbleSort
- 机器学习 第七周 总结 知识点
- synchronized和Lock
- poj 1573
- BI项目中的ETL设计详解(数据抽取、清洗与转换 )
- 关于Spring父子容器的理解
- Git记住用户名密码
- MATLAB中取整函数(fix, floor, ceil, round)的使用
- js计算鼠标当前相对于某个元素的位置
- Vue单页面title修改
- 权限与依赖
- 学会PDF转换器使用方法,再也不会熬夜整理PDF文件了