POJ 1573 Robot Motion 模拟
2011-09-09 16:58
501 查看
题意:给定一个矩阵,里面有N,S,W,E这4种字母,分别表示向上走,向下走,向左走,向右走4种操作,现给定一个起始点,若能走出矩阵,输出所需移动次数,若最终循环,则输出循环前的移动次数和循环一次的次数
#include <iostream> using namespace std; struct { int x,y,step; } map[13][13]; int main() { char ch; int row, col, start, r, c, cnt; while ( cin >> row >> col >> start ) { if ( row == 0 && col == 0 && start == 0 ) break; r = row; c = start; cnt = 0; memset(map,0,sizeof(map)); for ( int i = row; i >= 1; i-- ) { for ( int j = 1; j <= col; j++ ) { cin >> ch; switch ( ch ) { case 'N': { map[i][j].x = 0; map[i][j].y = 1; break; } case 'W': { map[i][j].x = -1; map[i][j].y = 0; break; } case 'S': { map[i][j].x = 0; map[i][j].y = -1; break; } case 'E': { map[i][j].x = 1; map[i][j].y = 0; break; } default: break; } } } while(1) { if ( r > row || r == 0 || c > col || c == 0 ) { cout << cnt << " step(s) to exit" << endl; break; } else if ( map[r][c].step != 0 ) { cout << map[r][c].step - 1 << " step(s) before a loop of " << cnt - map[r][c].step + 1 << " step(s)" << endl; break; } else { cnt++; map[r][c].step = cnt; int ctemp = map[r][c].x; int rtemp = map[r][c].y; c += ctemp; r += rtemp; } } } return 0; }
相关文章推荐
- POJ 1573 Robot Motion 模拟 难度:0
- POJ 1573 Robot Motion (模拟)
- Robot Motion(POJ 1573)(水题+纯模拟)
- POJ 1573 Robot Motion (经典模拟)
- POJ 1573:Robot Motion:简单模拟
- POJ 1573 && hdu 1035 Robot Motion【简单模拟】
- POJ 1573 && hdu 1035 Robot Motion(简单模拟)
- poj_1573 Robot Motion(简单模拟)
- POJ 1573-Robot Motion(模拟)
- poj 1573 Robot Motion 暑假训练第9题 模拟 大水题
- POJ 1573 && hdu 1035 Robot Motion【简单模拟】
- POJ 1573 Robot Motion(模拟)
- POJ-1573 Robot Motion 模拟水题
- HDU 1035 && poj 1573 Robot Motion【模拟】
- POJ 1573 Robot Motion (模拟+不回溯的dfs 水题)
- POJ 1573 Robot Motion 模拟机器人行走
- POJ 1573 Robot Motion 模拟
- 模拟 POJ 1573 Robot Motion
- poj 1573 Robot Motion 模拟
- poj 1573 Robot Motion 【模拟】【刷题计划】