标签:
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