.柚不幼.love. 2022-03-12 19:21 采纳率: 50%
浏览 181
已结题

C++跳跃(jump)问题

题目描述
小z在玩一个跳跃游戏。游戏平面是一个H * W的矩阵,每个格子上有一定高度的石柱。小z可以从任意一个格子开始,但他只能向相邻4个格子跳跃并且跳跃有一定高度限制。设当前所在格子的石柱高度为hi,则他可以跳跃到的高度为[hi - M, hi + M]。每个格子都可以被重复跳到。小z还有一个技能是瞬移。他可以瞬移到任意一个格子。
小z想知道,如果他想把每个格子都至少经过一次,需要瞬移的最少次数(开始也算一次瞬移)。

输入格式
输入第一行为三个整数H,W,M,如题意描述。
接下来H行,每行W个整数表示格子上石柱的高度。

输出格式
输出一行,表示瞬移最少次数。

输入样例
3 4 1
2 0 0 0
0 0 2 2
0 0 2 2
输出样例
3
数据范围与提示
【数据范围与约定】
30%: H, W <= 10, M <= 10
60%: H, W <= 300, M <= 50
100%: H, W <= 500, M <= 256,所有石柱高度 <= 256

  • 写回答

1条回答 默认 最新

  • _GX_ 2022-03-12 20:33
    关注
    #include <iostream>
    
    using namespace std;
    
    const int H = 500;
    const int W = 500;
    int a[H][W];
    int f[H][W];
    int h, w, m, c = 0;
    int uv[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
    
    void visit(int i, int j, int c)
    {
        if (f[i][j] != 0)
            return;
        f[i][j] = c;
        for (auto [u, v] : uv)
        {
            int x = i + u;
            int y = j + v;
            if (x < 0 || x >= h || y < 0 || y >= w)
                continue;
            if (abs(a[x][y] - a[i][j]) <= m)
                visit(x, y, c);
        }
    }
    
    int main()
    {
        cin >> h >> w >> m;
        for (int i = 0; i < h; i++)
            for (int j = 0; j < w; j++)
                cin >> a[i][j];
        for (int i = 0; i < h; i++)
            for (int j = 0; j < w; j++)
                if (f[i][j] == 0)
                    visit(i, j, ++c);
        cout << c << endl;
        return 0;
    }
    
    $ g++ -Wall -std=c++17 main.cpp
    $ ./a.out
    3 4 1
    2 0 0 0
    0 0 2 2
    0 0 2 2
    3
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月19日
  • 已采纳回答 3月16日
  • 创建了问题 3月12日

悬赏问题

  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题