给定一个数字三角形,从顶至底有多条路径,每一步可沿左斜线向下或沿右斜线向下,路径所经过的数字之和为路径得分,请求出最小路径得分。
输入数字三角形的行数和数字三角形
输出最小的路径和
输入样例5
7
8 3
9 8 7
1 2 3 4
4 5 6 7 8
25
问题分析从顶点开始,自顶向下计算。给定数字三角形a[i][j],1<=i<=n,1<=j<=n. 设dp[i][j]表示从顶点到位置(i,j)的最小路径和,则有dp[i][j]=min(dp[i-1][j-1],dp[i-1][j])+a[i][j],1<=i<=n,1<=j<=n。
完整代码#includeusing namespace std; const int INF=0x3f3f3f3f; long long dp[105][105]; int main(){ int n; long long a[105][105]; int i,j; cin>>n; for(i=0;i<=104;i++){ for(j=0;j<=104;j++){ a[i][j]=INF; if(i!=0)dp[i][j]=INF; } } for(i=1;i<=n;i++){ for(j=1;j<=i;j++){ cin>>a[i][j]; dp[i][j]=0; } } for(i=1;i<=n;i++){ for(j=1;j<=i;j++){ dp[i][j]=min(a[i][j]+dp[i-1][j],a[i][j]+dp[i-1][j-1]); // cout<



