题解DP
2026-10-02 23:19:23
发布于:浙江
3阅读
0回复
0点赞
首先,既然是DP,那么我们就得先找到状态转移方程
这里就是让上面的数自动选取下方两数中的较大数并加上:
dp[i][j]+=max(dp[i+1][j],dp[i+1][j+1]);
最后,塔顶的数就是答案啦~
奉上AC代码:
#include<bits/stdc++.h>
using namespace std;
int dp[1005][1005],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-1;i>=1;i--){
for(int j=1;j<=i;j++){
dp[i][j]+=max(dp[i+1][j],dp[i+1][j+1]);
}
}
cout<<dp[1][1];
return 0;
}
这里空空如也







有帮助,赞一个