社区讨论

洛谷读输出是不是有什么问题

P1101单词方阵参与者 6已保存回复 7

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
7 条
当前快照
1 份
快照标识符
@m260m887
此快照首次捕获于
2024/10/12 18:30
去年
此快照最后确认于
2025/11/04 17:22
4 个月前
查看原帖
这是我的代码
CPP
#include <bits/stdc++.h>
using namespace std;

char arr[105][105];
bool check[105][105];
int n;
int dir[8][2] = {{-1, -1}, {-1, 0}, {-1, 1}, {0, -1}, {0, 1}, {1, -1}, {1, 0}, {1, 1}};
map<char, int> mp = {{'y', 0}, {'i', 1}, {'z', 2}, {'h', 3}, {'o', 4}, {'n', 5}, {'g', 6}};

bool dfs(int x, int y, int d)
{
    if (arr[x][y] == 'g')
    {
        check[x][y] = true;
        return true;
    }
    int nx = x + dir[d][0];
    int ny = y + dir[d][1];
    if (nx >= 1 && nx <= n && ny >= 1 && ny <= n && mp.find(arr[nx][ny]) != mp.end())
    {
        if (mp[arr[nx][ny]] == mp[arr[x][y]] + 1)
        {
            if (dfs(nx, ny, d))
            {
                check[x][y] = true;
                return true;
            }
        }
    }
    return false;
}

int main()
{
    scanf("%d", &n);
    getchar();
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
            scanf("%c", &arr[i][j]);
        getchar();
    }
    memset(check, false, sizeof(check));
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
        {
            if (arr[i][j] == 'y')
            {
                for (int d = 0; d < 8; d++)
                {
                    dfs(i, j, d);
                }
            }
        }
    }
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
        {
            if (check[i][j])
                printf("%c", arr[i][j]);
            else
            printf("*");
        }
        printf("\n");
    }
}
然后,样例用的是题目给的样例2,样例2在我的编译器上是完全可以过的,这个样例也是这道题第1个测试点,结果我把代码提交上去,五个全部WA?有没有大佬说说是不是洛谷读代码有啥问题?

回复

7 条回复,欢迎继续交流。

正在加载回复...