题解
2024-03-27 21:35:48
发布于:上海
20阅读
0回复
0点赞
虽然是变种数塔问题,但是难度大了许多,关键在于如何计算哈
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
const int m=2*n+1;
int s[n][m]={},dp[n][m]={};
for(int i=0;i<n;i++)for(int j=2;j<=i*2+2;j++)cin>>s[i][j];
dp[0][2]=s[0][2];
for(int i=1;i<n;i++){
for(int j=2;j<=i*2+2;j++){
int minner=2147483647;
if(dp[i-1][j-2])minner=min(minner,dp[i-1][j-2]);
if(dp[i-1][j-1])minner=min(minner,dp[i-1][j-1]);
if(dp[i-1][j])minner=min(minner,dp[i-1][j]);
dp[i][j]=s[i][j]+minner;
}
}int minn=2147483647;
for(int i=2;i<m;i++)minn=min(dp[n-1][i],minn);
cout<<minn<<endl;
return 0;
}
这里空空如也
有帮助,赞一个