AcWing
  • 首页
  • 活动
  • 题库
  • 竞赛
  • 校园
  • 应用
  • 文章
    • 题解
    • 分享
    • 问答
  • 吐槽
  • 登录/注册

AcWing 691. 立方体IV 暴力做法    原题链接    简单

作者: 作者的头像   烤肉 ,  2022-06-24 10:01:33 ,  所有人可见 ,  阅读 15


1


直接枚举每个点能达到的最远距离是多少。然后更新答案即可。

#include <iostream>
#include <cstring>

using namespace std;

const int N = 1e3 + 10;
const int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};

int n, T;
int g[N][N];

int dfs(int sx, int sy)
{
    int v = g[sx][sy];
    int x = sx, y = sy;
    int cnt = 0;
    while (true)
    {
        bool flag = false;
        for (int i = 0; i < 4; ++i)
        {
            int tx = x + dx[i], ty = y + dy[i];
            if (g[tx][ty] == v + 1)
            {
                ++cnt;
                v += 1;
                x = tx, y = ty;
                flag = true;
                break;
            }
        }
        if (!flag)
            break;
    }
    return cnt;
}

int main()
{
    cin >> T;
    for (int u = 1; u <= T; ++u)
    {
        cin >> n;
        memset(g, 0, sizeof(g));
        for (int i = 1; i <= n; ++i)
            for (int j = 1; j <= n; ++j)
                cin >> g[i][j];

        int maxv = 0, res = 0x3f3f3f3f;
        for (int i = 1; i <= n; ++i)
            for (int j = 1; j <= n; ++j)
            {
                int v = dfs(i, j);
                if (maxv < v)
                    maxv = v, res = g[i][j];
                else if (maxv == v)
                    res = min(res, g[i][j]);
            }
        printf("Case #%d: %d %d\n", u, res, maxv + 1);
    }
    return 0;
}

0 评论

你确定删除吗?

© 2018-2022 AcWing 版权所有  |  京ICP备17053197号-1
用户协议  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息