求调
查看原帖
求调
1392775
xiejinghan楼主2025/7/30 20:49
#include<bits/stdc++.h>
using namespace std;
const int N = 100;
int n, a[N];
int maxf[N][N];
int minf[N][N];
int sum[N];

int main(){
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=n;i++) {
        maxf[i][i] = 0;
        minf[i][i] = 0;
        sum[i] = a[i] + sum[i-1];
    }
    for(int len=2;len<=n;len++){
        for(int u=1;u+len-1<=n;u++){
            int v = u + len -1;
            maxf[u][v] = INT_MIN;
            minf[u][v] = INT_MAX;
            for(int k=u;k<v;k++){
                maxf[u][v] = max(maxf[u][v],maxf[u][k] + maxf[k+1][v] + sum[v] - sum[u-1]);
                minf[u][v] = min(minf[u][v],minf[u][k] + minf[k+1][v] + sum[v] - sum[u-1]);
            }
        }
    }
    cout <<minf[1][n] << endl << maxf[1][n] << endl;
    
    return 0;
}
2025/7/30 20:49
加载中...