C++二维数组信奥题

给定一个具有N层的数字三角形如图,从顶到底有多条数径,每一步可沿左斜线向下或沿右斜线向下,路径所经过的数字之和为路径得分,请求出最小路径得分。
输入
第1行 , 一个正整数n,表示三角形的行数(n《=1500),第2到n+1行,照描述输入三角形,所有数字均小于2000000的整数
输出
最小路径得分,行末有换行
样例输入 样例输出
4 10
2
6 2
1 8 4
1 5 6 8

参考

你题目的解答代码如下:

#include <iostream>
using namespace std;

const int LN=1501;
int a[LN][LN];

int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=i;j++)
            cin>>a[i][j];

    for(int i=n-1;i>=1;i-- )
        for(int j=1;j<=i;j++)
            a[i][j]+=min(a[i+1][j],a[i+1][j+1]);
    cout<<a[1][1];
    return 0;
}

img

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img