标签:
Input
Output
Sample Input
Sample Output
/* 遇到墙转向,在同一点相遇相互交换方向,不往左转,其他如果达到cout左转 */ #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int dirx[] = {0, -1, 0, 1}; int diry[] = {1, 0, -1, 0}; int main() { int n, m; char ch1, ch2; int d1, d2, t1, t2, dir1, dir2; while(~scanf("%d", &n)){ if(n == 0) break; getchar(); scanf("%c%d%d", &ch1, &d1, &t1); if(ch1 == ‘E‘) dir1 = 0; else if(ch1 == ‘N‘) dir1 = 1; else if(ch1 == ‘W‘) dir1 = 2; else if(ch1 == ‘S‘) dir1 = 3; getchar(); scanf("%c%d%d", &ch2, &d2, &t2); if(ch2 == ‘E‘) dir2 = 0; else if(ch2 == ‘N‘) dir2 = 1; else if(ch2 == ‘W‘) dir2 = 2; else if(ch2 == ‘S‘) dir2 = 3; scanf("%d", &m); int x1 = 1, y1 = 1, x2 = n, y2 = n; int cout1 = 0, cout2 = 0; for(int i = 1; i <= m ;i++){ cout1++; cout2++; x1 = x1 + d1 * dirx[dir1]; y1 = y1 + d1 * diry[dir1]; x2 = x2 + d2 * dirx[dir2]; y2 = y2 + d2 * diry[dir2]; if(x1 < 1) { x1 = 2 - x1; dir1 = (dir1 + 2) % 4; } if(x1 > n){ x1 = n - (x1 - n); dir1 = (dir1 + 2) % 4; } if(y1 < 1){ y1 = 2 - y1; dir1 = (dir1 + 2) % 4; } if(y1 > n){ y1 = n - (y1 - n); dir1 = (dir1 + 2) % 4; } if(x2 < 1){ x2 = 2 - x2; dir2 = (dir2 + 2) % 4; } if(x2 > n){ x2 = n - (x2 - n); dir2 = (dir2 + 2) % 4; } if(y2 < 1){ y2 = 2 - y2; dir2 = (dir2 + 2) % 4; } if(y2 > n){ y2 = n - (y2 - n); dir2 = (dir2 + 2) % 4; } if(x1 == x2 && y1 == y2){ int temp = dir1; dir1 = dir2; dir2 = temp; } else { if(cout1 >= t1){ dir1 = (dir1 + 1) % 4; cout1 = 0; } if(cout2 >= t2){ dir2 = (dir2 + 1) % 4; cout2 = 0; } } // printf("%d %d %d %d %d %d\n", x1, y1,dir1, x2, y2, dir2); } printf("%d %d\n", x1, y1); printf("%d %d\n", x2, y2); } return 0; }
标签:
原文地址:http://www.cnblogs.com/zero-begin/p/4655766.html