求助,11分,样例都过不去

P1216 [USACO1.5] [IOI1994]数字三角形 Number Triangles

Lazy_make_name @ 2024-03-03 22:32:41

说一下主要问题

我无论输入怎样的金字塔,都只会输出最顶端的数 如:输入

3

1

1 2

1 2 3

我这会输出1 代码:

#include<iostream>
using namespace std;
int k[1001][1001];
int n[1001][1001];
int jisuan(int a,int b){
    if(k[a-1][b]>k[a-1][b-1])
        return n[a][b]+k[a-1][b];
    else
        return n[a][b]+k[a-1][b-1];
}
int main(){
    int r;
    cin>>r;
    for(int i=1;i<=r;i++)
        for(int j=1;j<=i;j++)
            cin>>n[i][j];
    for(int i=1;i<=r;i++)
        k[r-1][i]=n[r-1][i];
    for(int i=r;i>=1;i--)
        for(int j=1;j<=i;j++)
            k[i][j]=jisuan(i,j); 
    cout<<k[1][1];
}

by lcfollower @ 2024-03-03 22:41:03

@13860121259


by lcfollower @ 2024-03-03 22:42:13

你的计算方式属于正推,需要正着循环,并且在最后一层比最大值。


by Fractured_Angel @ 2024-03-03 22:44:21

啊?你这是啥方法()


|