Robot Motion(POJ 1573 模拟题)
2013-08-07 16:21
561 查看
~题目链接~
http://poj.org/problem?id=1573
输入
结果
输入行数、列数、机器人的位置
机器人可以出去,则输出步数
否则,则输出循环的始端和终端
View Code
http://poj.org/problem?id=1573
输入
3 6 5 NEESWE WWWESS SNWWWW 4 5 1 SESWE EESNW NWEEN EWSEN 0 0 0
结果
10 step(s) to exit 3 step(s) before a loop of 8 step(s)
输入行数、列数、机器人的位置
机器人可以出去,则输出步数
否则,则输出循环的始端和终端
#include<stdio.h> #include<string.h> #include<stdlib.h> int fx[4]= {-1,1,0,0}; int fy[4]= {0,0,-1,1}; int map[20][20],vis[20][20],st[20][20]; int flag,step,n,m,k,x,y; void DFS(int i,int j) { int I,J; st[i][j]=++step; I=i+fx[map[i][j]]; J=j+fy[map[i][j]]; if(I<0 || I>=n || J<0 || J>=m) return; if(!vis[I][J]) { vis[i][j]=1; DFS(I,J); } else { flag=1; x=st[I][J]-1; y=st[i][j]-st[I][J]+1; return; } } int main() { char str; while(~scanf("%d%d%d",&n,&m,&k) && (n!=0 || m!=0 || k!=0)) { getchar(); memset(vis,0,sizeof(vis)); memset(map,0,sizeof(map)); memset(st,0,sizeof(st)); for(int i=0; i<n; i++) { for(int j=0; j<m; j++) { scanf("%c",&str); if(str=='N') map[i][j]=0; if(str=='S') map[i][j]=1; if(str=='W') map[i][j]=2; if(str=='E') map[i][j]=3; } getchar(); } flag=0; step=0; DFS(0,k-1); if(flag) printf("%d step(s) before a loop of %d step(s)\n",x,y); else printf("%d step(s) to exit\n",step); } return 0; }
View Code
相关文章推荐
- poj 1573 Robot Motion(模拟题)
- poj 1573 Robot Motion (模拟题)
- poj 1573 Robot Motion【模拟题 写个while循环一直到机器人跳出来】
- POJ 1573 Robot Motion
- poj 1573 Robot Motion_模拟
- <poj-1573>Robot Motion
- POJ 1573 Robot Motion (模拟+不回溯的dfs 水题)
- poj 1573 Robot Motion
- poj 1573 Robot Motion
- POJ训练计划1573_Robot Motion(递归)
- POJ 1573 && HDU 1035 Robot Motion(水~)
- poj-1573 Robot Motion
- POJ 1573 Robot Motion 模拟机器人行走
- poj 1573 Robot Motion
- poj 1573 Robot Motion
- POJ 1573 Robot Motion 模拟
- Robot Motion(POJ 1573)(水题+纯模拟)
- poj 2632 Crashing Robots&&POJ 1573 Robot Motion 【建坐标系的问题】
- poj-1573-Robot Motion--模拟
- POJ 1573 Robot Motion【是搜索,就不要纠结是DFS还是BFS】