做这道题前应该做一下:CP003174
2023-12-17 11:46:22
发布于:广东
143阅读
0回复
0点赞
数塔问题变种题。
#include <bits/stdc++.h>
using namespace std;
int dp[3001][3001];//以i为行,j为列:dp[i][j]: 从最下层到最前面 第i行第j列的最小值
int a[3001][3001];
int n;
int main()
{
cin>>n;
for(int i=1;i<=n;++i)
for(int j=1;j<=2*i-1;++j)
cin>>a[i][j];
//初始状态
for(int j=1;j<=2*n-1;++j)
{
dp[n][j]=a[n][j];
}
for(int i=n;i>=1;--i)
for(int j=1;j<=2*i-1;++j)
dp[i][j]=min(min(dp[i+1][j],dp[i+1][j+1]),dp[i+1][j+2])+a[i][j];
cout<<dp[1][1];
return 0;
}
全部评论 1
good
2024-03-09 来自 广东
0
有帮助,赞一个