当前位置:首页 > 其他 > IOI 1994 洛谷1216:如何用O(1)空间解决数字三角形问题?附代码实现

IOI 1994 洛谷1216:如何用O(1)空间解决数字三角形问题?附代码实现

11个月前 (05-23)


IOI 1994 洛谷1216:如何用O(1)空间解决数字三角形问题?附代码实现 倒推法 洛谷  数字三角形 动态规划 算法 C++ 递推 第1张题目重解:

数字三角形是一个经典的动态规划问题,给定一个由数字组成的三角形结构,从顶部出发,每次可以移动到下方相邻的数字,最终到达底部。我们需要找到一条路径,使得路径上经过的数字总和最大。这个问题可以很好地展示动态规划的空间优化技巧。


解题思路:

1.直接在原数组上进行操作,不需要额外空间

2.从倒数第二行开始向上处理

3.每个位置更新为当前值加上下方两个相邻位置中的较大值

4.最终顶部元素即为最大路径和

这种方法将空间复杂度优化到O(1),直接在输入数组上进行修改,是最优的空间解决方案。


代码详解:

#include<iostream>
using namespace std;
int** nums; // 定义一个二维指针数组,用于存储数字三角形

int main()
{
    int r; // 三角形的行数
    cin>>r; // 输入行数
    nums=new int*[r]; // 为每一行分配指针空间
    for(int i=0;i<r;i++){
        nums[i]=new int[r]; // 为每一行分配具体的存储空间
        for(int j=0;j<=i;j++) // 逐行输入数字
            cin>>nums[i][j];
    }
    for(int i=r-1;i>0;i--){ // 从倒数第二行开始向上计算
        for(int j=0;j<r;j++){ // 遍历当前行的每个位置
            nums[i-1][j]+=max(nums[i][j],nums[i][j+1]); // 更新当前位置的最大路径和
        }
    }    
    cout<<nums[0][0]; // 输出顶部的最大路径和,即为最终答案

    return 0;
}


原创内容 转载请注明出处

分享给朋友:

相关文章

牛客12576题解题全解析:动态规划+质因数分解实现跳跃问题最优解

牛客12576题解题全解析:动态规划+质因数分解实现跳跃问题最优解

一、题目解读牛客12576题是一道经典的算法题,要求给定起点N和终点M,求解从N到M的最少跳跃次数。题目考察的核心在于路径优化与动态规划思想,需结合数论中的质因数分解技巧,通过合理设计算法降低时间复杂...

NOIP 2008火柴棒等式题解(C++代码实现)  动态规划与枚举算法详解

NOIP 2008火柴棒等式题解(C++代码实现) 动态规划与枚举算法详解

一、题目解读火柴棒等式问题(NOIP 2008,洛谷P1149)要求使用给定数量的火柴棒,构造形如 A + B = C 的等式,其中A、B、C均为整数,且火柴棒总数恰好等于输入值。需统计符合条件的等式...

洛谷P4551题解题报告:图论与Trie树优化异或路径问题的实战解析

洛谷P4551题解题报告:图论与Trie树优化异或路径问题的实战解析

一、题目解读洛谷P4551题要求在一个无向图中,寻找任意两点路径权值异或后的最大值。题目输入为图的边信息(点数n和n-1条边),每条边包含起点、终点及权值。需输出所有路径中权值异或的最大值。问题核心在...

1999年NOIP提高组导弹拦截(洛谷P1020)解题思路与动态规划代码解析

1999年NOIP提高组导弹拦截(洛谷P1020)解题思路与动态规划代码解析

一、题目解读    1999年NOIP提高组“导弹拦截”问题(对应洛谷P1020)要求设计导弹拦截系统:给定一组导弹高度数据,需计算最少拦截系统数量,并求最多能...

洛谷2789题解:直线交点数的递归求解与优化(附代码详解)

洛谷2789题解:直线交点数的递归求解与优化(附代码详解)

一、题目解读洛谷2789题要求计算n条直线在平面上两两相交时产生的不同交点数量。题目强调“不同”交点,需排除重复情况。解题关键在于如何高效枚举所有可能的交点组合,并避免重复计数。二、解题思路参考代码采...

力扣931题最小下降路径和解析 动态规划解法 LeetCode解题技巧

力扣931题最小下降路径和解析 动态规划解法 LeetCode解题技巧

一、题目解读力扣931题「Minimum Falling Path Sum」(最小下降路径和)要求在一个n x n的整数矩阵中,计算从顶部到底部的最小路径和。路径只能从每个位置向下或对角线移动(即向下...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。