The Triangle

数字三角形:这应该是最简单的动态规划题了。
解题思路:题目要求所有路径中最大的,可以考虑从后面入手,第(i,j)的最大值,有两个来源,一个是从上直接下来,还有就是从斜边下来,即(i-1,j)和(i-1,j-1)中取最大值。然后定义一个变量用来记录最大值。最后输出这个最大值就行了!

#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
int main(){
    int n;
    int a[105][105];
    memset(a,0,sizeof(a));
    int dp[105][105];
    memset(dp,0,sizeof(dp));
    cin>>n;
    int maxim =0;
    for(int i=1; i <= n; i++){
        for(int j =1; j <= i; j++ ){
            cin >> a[i][j];
              dp[i][j]=max(dp[i-1][j], dp[i-1][j-1]) + a[i][j];
              if(dp[i][j] > maxim)
                 maxim = dp[i][j];
        }
    }

    cout << maxim << endl;

    return 0;
} 
全部评论

相关推荐

斯卡蒂味的鱼汤:我认为就是逃课实习的学生技术才靠谱
点赞 评论 收藏
分享
06-07 00:00
已编辑
腾讯_后端开发
点赞 评论 收藏
分享
小鹏、大疆、米哈游、MinMax小鹏上午投的下午就约面,进度未免也太快了
蛇年行大运fff:哥们 盗贴有意思吗,我发xhs上的给你搬过来了😅😅😅
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务