#include<iostream>
using namespace std;
int dp[1000][1000] ;
void calculate(int a[], int n, int m){
int mi;
if(n == 0) {
cout<<0;
return;
}
for(int i=1; i<=n; i++){
dp[i][1] = dp[i-1][1] + a[i] ;
}
int k=1;
for(int i=1; i<=n; i++){
for(int j=2; j<=m; j++){
mi= 19999;
for(k=1;k<=i;k++){
mi=min(mi,max(dp[k][j-1],dp[i][1]-dp[k][1]));
}
dp[i][j]=mi;
}
}
cout<<dp[n][m];
}
int main()
{
int n,m;
cin>>n>>m;
int a[n];
for(int i=1; i<=n; i++){
cin>>a[i];
}
calculate(a, n, m) ;
}
最小m段和问题
最新推荐文章于 2023-12-06 14:59:03 发布