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