2 条题解

  • 1
    @ 2023-4-20 18:31:26

    这是一道典型的区间动归

    #include <bits/stdc++.h>
    using namespace std;
    int s[1001],f[1001][1001],n;
    int dp(int l, int r) {
        if (l==r)return 0;
        if (f[l][r]!=INT_MAX)return f[l][r];
        for(int i=l;i<r;i++) {
            f[l][r]=min(f[l][r],dp(l,i)+dp(i+1,r)+s[r]-s[l - 1]);
        }
        return f[l][r];
    }
    
    int main() {
        cin>>n;
        for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)f[i][j]=INT_MAX;
        for(int i=1;i<=n;i++)cin>>s[i],s[i]+=s[i-1];
        cout<<dp(1,n);
        return 0;
    }
    

    信息

    ID
    611
    时间
    1000ms
    内存
    256MiB
    难度
    3
    标签
    递交数
    60
    已通过
    27
    上传者