题目毁灭者.Gold King打鼠
2025-08-16 21:22:39
发布于:浙江
3阅读
0回复
0点赞
这,就是一个数塔问题
1 | |||
---|---|---|---|
2 | 3 | ||
4 | 5 | 6 | |
7 | 8 | 9 | 10 |
从下往上遍历,每个节点存储以这个节点为起点可得的最大数
动态规划的本质是避免重复子问题,所以从下往上,每位直接利用已有的数据
#include<bits/stdc++.h>
using namespace std;
int dp[20][20];
int n;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
cin>>dp[i][j];
}
}
for(int i=n;i>=1;i--){
for(int j=1;j<=i;j++){
dp[i][j]=dp[i][j]+max(dp[i+1][j],dp[i+1][j+1]);
}
}
/*for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
cout<<dp[i][j]<<" ";
}
cout<<endl;
}*/
cout<<dp[1][1];
return 0;
}
这里空空如也
有帮助,赞一个