0
点赞
收藏
分享

微信扫一扫

POJ 1573 Robot Motion

small_Sun 2023-02-22 阅读 47


#include <iostream>
#include <queue>
#include <vector>
#include <algorithm>
#include <stack>

using namespace std;

#define debug(x) cout<<#x<<": "<<(x)<<endl;
#pragma warning(disable:4996)

int dx[4] = {-1,0, 1, 0};
int dy[4] = {0, 1, 0,-1};

bool help(int n, int m, int col) {
//N 0 E 1 S 2 W 3

vector<vector<int>> a(n,vector<int>(m,-1));
vector<vector<int>> v(n,vector<int>(m,-1));

for (size_t i = 0; i < n; ++i) {
for (size_t j = 0; j < m; ++j) {
char c;
cin >> c;
switch (c)
{
case 'N':a[i][j] = 0; break;
case 'E':a[i][j] = 1; break;
case 'S':a[i][j] = 2; break;
case 'W':a[i][j] = 3; break;
default:
break;
}
}
}
int x = 0;
int y = col - 1;
int cnt = 0;

bool out = true;
while (x >= 0 && x < n && y >= 0 && y < m) {
int d = a[x][y];
if (v[x][y] >= 0) {
cout << v[x][y] << " step(s) before a loop of "<< cnt-v[x][y] << " step(s)" << endl;
out = false;
break;
}
v[x][y] = cnt;
x += dx[d], y += dy[d];
cnt++;
}
if (out) {
cout << cnt << " step(s) to exit" << endl;
}

return true;
}

int main()
{
int n, m, col;
//freopen("../in1.txt","r",stdin);
while (cin >> n >> m >> col) {
if (n == 0 && m==0 && col==0) {
break;
}
help(n,m,col);
}

return 0;
}

POJ 1573 Robot Motion_ci


举报

相关推荐

0 条评论