poj 1573 Robot Motion
2012-06-29 21:42
417 查看
一道简单的模拟题:
View Code
View Code
#include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> #include<cmath> #include<queue> #include<set> #include<vector> using namespace std; int judge( char map[][124], int visit[][124],int x ,int y ,int n , int m) { if( x <1 || x >n || y < 1 || y > m ) return 2; if( visit[x][y]!=0 ) return 1; return 0; } void DFS( char map[][124],int visit[][124],int n , int m , int x,int y ) { int t; // printf( "%c %d %d\n",map[x][y],x,y ); switch( map[x][y] ) { case 'S': t = judge( map , visit, x+1 ,y ,n ,m ); if( t!=0 ) { if( t == 1 ) printf( "%d step(s) before a loop of %d step(s)\n",visit[x+1][y]-1,visit[x][y]+1-visit[x+1][y] ); else printf( "%d step(s) to exit\n",visit[x][y] ); } else { visit[x+1][y] = visit[x][y] + 1; DFS( map ,visit, n , m , x+ 1,y ); } break; case 'N':t = judge( map , visit, x-1 ,y , n, m ); if( t!=0 ) { if( t == 1 ) printf( "%d step(s) before a loop of %d step(s)\n",visit[x-1][y]-1,visit[x][y] +1-visit[x-1][y] ); else printf( "%d step(s) to exit\n",visit[x][y] ); } else { visit[x-1][y] = visit[x][y] + 1; DFS( map ,visit, n , m , x - 1,y ); } break; case 'E': t= judge( map , visit, x ,y+1 ,n,m); if( t!=0 ) { if( t == 1 ) printf( "%d step(s) before a loop of %d step(s)\n",visit[x][y+1]-1,visit[x][y]+1 -visit[x][y+1] ); else printf( "%d step(s) to exit\n",visit[x][y] ); } else { visit[x][y+1] = visit[x][y] + 1; DFS( map ,visit, n , m , x ,y + 1 ); } break; case 'W': t = judge( map , visit, x ,y -1 ,n,m); if( t!=0 ) { if( t == 1 ) printf( "%d step(s) before a loop of %d step(s)\n",visit[x][y-1]-1,visit[x][y]+1-visit[x][y-1] ); else printf( "%d step(s) to exit\n",visit[x][y] ); } else { visit[x][y-1] = visit[x][y] + 1; DFS( map ,visit, n , m , x ,y - 1 ); } break; } } int main( ) { char map[124][124]; int n , m ,start; while( scanf( "%d %d %d",&n,&m,&start ),n||m||start ) { int visit[124][124] = {0}; for( int i = 1 ; i <= n ; i ++ ) { scanf( "%s",map[i] + 1 ); } visit[1][start] = 1; DFS( map ,visit, n , m , 1,start ); } //system( "pause" ); return 0; }
相关文章推荐
- Poj OpenJudge 百练 1573 Robot Motion
- POJ 1573 Robot Motion (模拟+不回溯的dfs 水题)
- POJ 刷题系列:1573. Robot Motion
- POJ 1573 Robot Motion(模拟)
- POJ 1573 Robot Motion(BFS)
- POJ 1573 Robot Motion(BFS)
- Robot Motion - poj 1573
- poj 1573 Robot Motion
- poj 1573 Robot Motion_模拟
- POJ 1573 Robot Motion 模拟
- POJ 1573, Robot Motion
- poj 1573 - Robot Motion(BFS递推)
- poj 1573 Robot Motion
- POJ 1573 Robot Motion 模拟
- poj 1573 Robot Motion_模拟
- poj 1573 Robot Motion 模拟
- POJ 1573-Robot Motion
- poj 1573 Robot Motion
- poj 1573 Robot Motion
- poj 1573 Robot Motion