蒟蒻求助,只有2个AC
查看原帖
蒟蒻求助,只有2个AC
73179
可期楼主2023/3/29 15:01
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<stdlib.h>
#include<iomanip>
#include<algorithm>
#include<cmath>
#include<vector>

#define MAXN (int)1e5
#define MOD (int)1e5 + 7

#define N 1
#define E 2
#define S 3
#define W 4

using namespace std;

struct Status{
    int x, y;
    int dir;
};

char map[15][15];

void move(Status* s) {
    if(s->dir == N) {
        if(map[s->x - 1][s->y] != '*') s->x --;
        else s->dir ++;
    }
    else if(s->dir == S) {
        if(map[s->x + 1][s->y] != '*') s->x ++;
        else s->dir ++;
    }
    else if(s->dir == W) {
        if(map[s->x][s->y - 1] != '*') s->y --;
        else s->dir ++;
    }
    else if(s->dir == E) {
        if(map[s->x][s->y + 1] != '*') s->y ++;
        else s->dir ++;
    }
    if(s->dir > 4) s->dir = 1;
}

int main() {
    Status f, c;

    for(int i = 1; i <= 10; i++) {
        for(int j = 1; j <=10; j++) {
            map[i][j] = getchar();
            if(map[i][j] == 'F') f.x = i, f.y = j, f.dir = N;
            if(map[i][j] == 'C') c.x = i, c.y = j, c.dir = N;
        }
        getchar();
    }

    for(int i = 0; i <= 11; i ++){
        map[0][i] = '*', map[11][i] = '*';
        map[i][0] = '*', map[i][11] = '*';
    }

    int ans = 0;
    while(true) {
        move(&f);
        move(&c);
        ans ++;
        if(ans > MAXN * 1000) {
            ans = 0;
            break;
        }
        if(f.x == c.x && f.y == c.y) break;
    }
    cout << ans;
    return 0;
}
2023/3/29 15:01
加载中...