——奈芙莲—— 2024-07-01 22:08 采纳率: 40%
浏览 5

求解析和答案,急!c++问题

第一题:
给你n个数字,这n个数字可能有重复,请找出最小的能够覆盖所有出现过的数字的区间长度
输入描述
第一行 n
第二行 n个数
输出描述
能够包含所有出现过的数字的最小覆盖长度
用例输入 1
8
1 2 1 1 2 1 3 1
用例输出 1
3
用例输入 2
4
1 1 1 2
用例输出 2
2
提示
1<=n<=100000
每个数不超过int范围

第二题:
你和小明现在各自有 n 堆糖果排成一排,标号为 1 到 n,每堆糖果数量可能不一
样,你想和小明每个标号的糖果数量一样,于是你开始移动你的糖果,但是你每
一步只能从某一堆取一个糖果放到相邻的糖果堆里,请问需要多少步可以将你的
糖果每一堆都和小明的一样,如果不能完成,则输出“-1”。
输入描述
第一行先输入一个整数 n
第二行输入你的 n 堆糖果数 ai
第三行输入小明的 n 堆糖果数 bi
输出描述
输出一个整数表示最少的操作步数,如果无法完成,输出-1
用例输入 1
2
1 2
2 1
用例输出 1

1
用例输入 2
3
1 1 2
2 1 1
用例输出 2
2
用例输入 3
9
3 10 0 4 0 0 0 1 0
5 5 0 7 0 0 0 0 1
用例输出 3
9
用例输入 4
2
1 1
2 1
用例输出 4
-1
提示
1 ≤n≤ 50,0 ≤ ai, bi ≤ 10^6。

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-07-01 22:08
    关注

    引自免费微信小程序:皆我百晓生

    这个问题可以通过动态规划的方法解决。首先,我们需要定义两个二维数组dp[1][i]和dp[i+1][j],其中dp[1][i]表示在第1轮比赛中,当第i堆是第1堆时,我们可以得到的最大得分,而dp[i+1][j]则表示在第i轮比赛后,当第j堆是第i堆时,我们可以在第j堆获得的最大分数。

    接下来,我们可以计算出dp[1][i]和dp[i+1][j]的值。对于dp[1][i],我们可以将其设置为当前第i堆的分值加上第i堆之前的所有其他堆的最高分(因为第i堆是最高的)。而对于dp[i+1][j],我们可以将其设置为当前第j堆的分值加上第j堆之前的所有其他堆的最高分(因为第j堆是最高的)。

    然后,我们可以遍历整个比赛过程中的每一场比赛,对于每一场,我们都可以根据dp[1][i]和dp[i+1][j]的值进行选择,即在第i轮比赛后,我们可以在第j堆获得的最大分数等于第i堆之前的最高分加第j堆之前的最高分。因此,我们将这个最大分数赋给dp[i+1][j]。

    最后,我们可以返回dp[n][k]作为结果,这是我们在第n轮比赛中可以获得的最大分数。如果dp[n][k]小于等于0,那么我们就无法让第k堆达到与小明相同的分数,所以我们返回-1。

    以下是Python实现的代码:

    def findMinimumMoves(n, a, b):
        dp = [[0]*n for _ in range(n)]
        
        # 初始化第1轮比赛的结果
        for i in range(n):
            dp[1][i] = max(a[i], max(dp[1][:i]))
            
        # 计算第2轮比赛的结果
        for j in range(2, n):
            for i in range(n-j):
                dp[j][i] = max(b[i+j], dp[j-1][i])
                
        return dp[-1][-1]
    

    在这个代码中,我们使用了三个变量dp[1][i]、dp[i+1][j]和dp[n][k]分别代表第1轮比赛后的最高分、第i轮比赛后的最高分和第k堆达到与小明相同分数的步骤数。我们使用动态规划的方法逐步更新这些变量,并最终返回dp[n][k]作为结果。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月1日

悬赏问题

  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥15 pyqt信号槽连接写法
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注