1 solutions

  • 0
    @ 2024-12-11 0:49:29

    C :

    #include<stdio.h>
    int max(int a,int b)
    {
        return(a > b? a:b);
    }
    int a[1005][1005];
    int main()
    {
        int i,j,n;
        scanf("%d",&n);
        for(i = 1;i <= n;i++)
            for(j = 1;j <= i;j++)
            scanf("%d",&a[i][j]);
    
        for(i = n;i >= 2;i--)//当i<i时 越界
            for(j = 1;j < i;j++)//当j=i时 越界
            a[i-1][j] = a[i-1][j]+max(a[i][j],a[i][j+1]);//递归
        printf("%d\n",a[1][1]);
        return 0;
    }
    
    

    C++ :

    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int N(1005);
    long long a[N][N],f[N][N]={0};
    int main()
    {
        //ifstream cin("exam1.in");
        //ofstream cout("exam1.out");
        int n;
        cin>>n;
        for (int i=1;i<=n;i++)
            for (int j=1;j<=i;j++)
                cin>>a[i][j];
        f[1][1]=a[1][1];
        for (int i=2;i<=n;i++)
            for (int j=1;j<=i;j++)
                f[i][j]=max(f[i-1][j-1],f[i-1][j])+a[i][j];
        long long ans=f[n][1];
        for (int j=1;j<=n;j++)
            ans=max(ans,f[n][j]);
        cout<<ans<<endl;
        //system("pause");
        return 0;
    }
    
    

    Pascal :

    Program TK2596;
    uses math;
    var i,j,n:longint; 
        a,f:array[0..1000,0..1000]of longint;
    
    Begin 
    	readln(n);
    	for i:=1 to n do for j:=1 to i do 
    		read(a[i][j]);
    	for i:=n downto 1 do for j:=1 to i do begin 
    		if i=n then f[i][j]:=a[i][j]
    			else f[i][j]:=a[i][j]+max(f[i+1][j],f[i+1][j+1]);
    	end;
    	writeln(f[1][1]);
    End.
    
    • 1

    Information

    ID
    729
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By