1 solutions

  • 0
    @ 2025-3-3 16:24:07

    C++ :

    #include <iostream>
    #include<cstdio>
    #include<cstdlib>
    using namespace std;
    #define M 101
    #define INF 1000000000
    int n,f[M][M],sum[M][M],stone[M];
    int main()
    {
        int i,j,k,t;
        cin>>n;
        for(i=1;i<=n;i++)
            scanf("%d",&stone[i]);
    
        for(i=1;i<=n;i++)
        {
            f[i][i]=0;
            sum[i][i]=stone[i];
            for(j=i+1;j<=n;j++)
                sum[i][j]=sum[i][j-1]+stone[j];
        }
    
        for(int len=2;len<=n;len++)
        {
            for(i=1;i<=n-len+1;i++)
            {
                j=i+len-1;
                f[i][j]=INF;
                for(k=i;k<=j-1;k++)
                {
                    if(f[i][j]>f[i][k]+f[k+1][j]+sum[i][j])
                        f[i][j]=f[i][k]+f[k+1][j]+sum[i][j];
                }
            }
        }
        printf("%d\n",f[1][n]);
        return 0;
    }
    
    
    • 1

    Information

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