练习3,初见动态规划之经典的三角形问题【动态规划DP】

本文介绍了如何利用动态规划求解USACO1.5与IOI1994竞赛中的'数字三角形'问题。状态转移方程为d(i,j)=a(i,j)+max[d(i+1,j),d(i+1,j+1)],代码中展示了详细实现过程,包括输入矩阵、初始化、以及核心的递归求解函数so()。

zhuang'tai'zhuan'yi题目为[USACO1.5][IOI1994]数字三角形 Number Triangles

状态转移方程为:d(i,j)=a(i,j)+max[d(i+1,j),d(i+1,j+1)]

思路源于《算法竞赛入门经典》

#include<bits/stdc++.h>
using namespace std;
int a[1000][1000],r,d[1000][1000];
int so(int i, int j){
    if(d[i][j]>=0) return d[i][j];
    return d[i][j]=a[i][j]+(i == r ? 0 : max(so(i+1,j),so(i+1,j+1)));
}
int main(){
    cin >> r;
    for(int i=1;i<=r;i++)
        for(int j=1;j<=i;j++) cin >> a[i][j];
        memset(d,-1,sizeof(d));
    cout <<so(1,1);
    return 0;
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ILECY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值