考试时样例全过,Windows下无法正常运行
查看原帖
考试时样例全过,Windows下无法正常运行
728193
TianKeMing楼主2024/10/26 17:50

rt,代码如下(根据记忆写下的)

#include <bits/stdc++.h>
using namespace std;
int solve(int n, int m, int k, int x, int y, int d, char map[1001][1001]) {
    int sum = 0;
    int f[1002][1002];
    for (int i = 0; i <= n + 1; i++) {
        for (int j = 0; j <= m + 1; j++) {
            if (map[i][j] == '.') f[i][j] = 0;
            else f[i][j] = -1;
        }
    }
    f[x][y] = 1;
    for (int i = 1; i <= k; i++) {
        if (d == 0) {
            if (f[x][y + 1] == -1) {
                d = (d + 1) % 4;
                continue;
            }
            y++;
            f[x][y + 1] = 1;
            continue;
        }
        if (d == 1) {
            if (f[x + 1][y] == -1) {
                d = (d + 1) % 4;
                continue;
            }
            x++;
            f[x + 1][y] = 1;
            continue;
        }
        if (d == 2) {
            if (f[x][y - 1] == -1) {
                d = (d + 1) % 4;
                continue;
            }
            y--;
            f[x][y - 1] = 1;
            continue;
        }
        if (d == 3) {
            if (f[x - 1][y] == -1) {
                d = (d + 1) % 4;
                continue;
            }
            x--;
            f[x - 1][y] = 1;
            continue;
        }
    }
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
            if (f[i][j] == 1) sum++;
        }
    }
    return sum;
}
int main(){
    int T, N[6], M[6], K[6], X[6], Y[6], D[6], ans[6];
    char MAP[6][1001][1001];
    cin >> T;
    for (int a = 1; a <= T; a++) {
        cin >> N[a] >> M[a] >> K[a] >> X[a] >> Y[a] >> D[a];
        for (int i = 1; i <= N[a]; i++) {
            for (int j = 1; j <= M[a]; j++) cin >> MAP[a][i][j];
        }
        ans[a] = solve(N[a], M[a], K[a], X[a], Y[a], D[a], MAP[a]);
    }
    for (int i = 1; i <= T; i++) cout << ans[i];
    return 0;
}

经排查,是数组MAP[6][1001][1001]出了问题,是范围定义太大了吗?考试时在NOI Linux2.0环境下编译,样例全过,运行没有问题,有人知道问题吗?

2024/10/26 17:50
加载中...