华为OD统一考试 - 跳格子3

题目描述

小明和朋友们一起玩跳格子游戏,

每个格子上有特定的分数 score = [1, -1, -6, 7, -17, 7],

从起点score[0]开始,每次最大的步长为k,请你返回小明跳到终点 score[n-1] 时,能得到的最大得分。

输入描述

第一行输入总的格子数量 n

第二行输入每个格子的分数 score[i]

第三行输入最大跳的步长 k

输出描述

输出最大得分

备注

  • 格子的总长度 n 和步长 k 的区间在 [1, 100000]
  • 每个格子的分数 score[i] 在 [-10000, 10000] 区间中

示例1

输入:
6
1 -1 -6 7 -17 7
2
输出:
14
说明:
输出最大得分数,小明从起点score[0]开始跳,第一次跳score[1],第二次跳到score[3],第三次跳到score[5],因此得到的最大的得分是score[0] + score[1] + score[3] + score[5] = 14


import Foundation

func ODTest_2_4() {
    print("第一行输入总的格子数量 n")
    let n = Int(readLine() ?? "") ?? 0
    print("第二行输入每个格子的分数 score[i]")
    let score = (readLine() ?? "").split(separator: " ").map { Int($0) ?? 0 }
    print("第三行输入最大跳的步长 k")
    let k = Int(readLine() ?? "") ?? 0
    // 格子的总长度 n 和步长 k 的区间在 [1, 100000]
    // 每个格子的分数 score[i] 在 [-10000, 10000] 区间中
    if n < 1 || n > 10000 || k < 1 || k > 10000 || n != score.count
        || score.first(where: { $0 < -10000 || k > 10000 }) != nil
    {
        print("NULL")
        return
    }

    // dp[i] 表示跳到 score[i-1] 能得到的最大得分
    var dp = Array(repeating: -10000, count: n)
    dp[0] = score[0]
    for i in 1 ..< n {
        for step in 1 ... k {
            let right = max(i - step, 0)
            dp[i] = max(dp[right] + score[i], dp[i])
        }
    }
    print("输出最大得分")
    print(dp)
    print(dp[n - 1])
}

全部评论

相关推荐

Git的工作流程通常包括以下几个步骤:https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&amp;amp;uuid=f818c6d22c98401682f8662612b9e57f克隆(Clone):首先,通过克隆一个远程仓库到本地,创建一个本地仓库的副本。这样可以在本地进行开发和修改。添加和修改(Add&nbsp;and&nbsp;Modify):在本地仓库中进行代码的添加和修改。开发者可以通过添加新文件、修改现有文件或删除文件来进行开发工作。暂存(Stage):将修改的文件添加到暂存区(也称为索引),准备提交到版本库。暂存区相当于一个缓冲区,用于存放即将提交的修改。提交(Commit):将暂存区的修改提交到版本库。每次提交都会生成一个唯一的提交记录,包含了修改的详细信息,如作者、时间戳和提交消息。推送(Push):将本地的提交推送到远程仓库,与团队成员共享代码。推送操作将本地的提交同步到远程仓库,使得其他人可以看到和使用这些修改。拉取(Pull):从远程仓库拉取最新的代码更新到本地仓库。当其他人推送了新的修改到远程仓库时,开发者可以通过拉取操作获取这些更新。合并(Merge):将不同分支的修改合并到一起。当开发者在不同的分支上进行并行开发时,可以使用合并操作将分支的修改合并到主分支或其他分支上。冲突解决(Conflict&nbsp;Resolution):当多个分支对同一文件进行了不同的修改时,可能会发生冲突。开发者需要手动解决这些冲突,选择保留哪些修改或进行修改的合并。这些步骤构成了Git的基本工作流程。通过这个工作流程,开发者可以有效地管理代码的版本、协作开发和跟踪修改历史。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务