2140、解决智力问题

题目

解答

正向不好做,反向遍历。

定义:dp[i] [i,n)的分数

初始化:dp[n]=0

递推:dp[i]=max(dp[i+1],questions[i][0]+dp[i+questions[i][1]+1]) 如果越界了,就截断到dp[n]

最后return dp[0]即可

cpp 复制代码
class Solution {
public:
    long long mostPoints(vector<vector<int>>& questions) {
        int n = questions.size();
        //定义dp[i]:[i,n)的分数
        //dp[i]=max(dp[i+1],questions[i][0]+dp[i+questions[i][1]+1])
        //如果i+questions[i][1]>=n 则dp[i]=max(dp[i+1],questions[i][0])
        vector<long long> dp(n+1);
        dp[n] = 0;
        for(int i=n-1;i>=0;i--){
            if(i+questions[i][1]>=n)
                dp[i]=max(dp[i+1],(long long)questions[i][0]);
            else
                dp[i]=max(dp[i+1],(long long)questions[i][0]+dp[i+1+questions[i][1]]);
        }
        return dp[0];
    }
};

时间复杂度O(n)

空间复杂度O(n)

相关推荐
十八岁讨厌编程42 分钟前
【算法训练营Day26】动态规划part2
算法·动态规划
智者知已应修善业2 小时前
【C++无数组矩阵对角线平均值保留2位小数】2022-11-18
c语言·c++·经验分享·笔记·算法·矩阵
papership2 小时前
【入门级-算法-6、排序算法: 计数排序】
数据结构·算法·排序算法
pengpeng022 小时前
力扣每日一题 611. 有效三角形的个数
算法·leetcode·职场和发展
2401_840105202 小时前
GESP C++5级 2025年6月编程2题解:最大公因数
数据结构·c++·算法
未知陨落2 小时前
LeetCode:56.子集
算法·leetcode·深度优先
PAK向日葵2 小时前
【算法导论】一道涉及到溢出处理的笔试题
算法·面试
哈泽尔都3 小时前
运动控制教学——5分钟学会样条曲线算法!(三次样条曲线,B样条曲线)
c++·人工智能·算法·机器学习·matlab·贪心算法·机器人
小镇学者3 小时前
【NOI】在信奥赛中 什么是函数交互题?
算法
未知陨落4 小时前
LeetCode:62.N皇后
算法·leetcode