为什么第一输出是-1 ???没错的呀
查看原帖
为什么第一输出是-1 ???没错的呀
966217
Ying_e楼主2024/7/1 09:20
#include<bits/stdc++.h>
using namespace std;
int dp[110][110],dp1[110][110];
int main(){
	int n,rock[10010],sum[10010];
	cin >> n;
	for(int i =1;i<=n;i++)
	{
		cin >> rock[i];
		rock[i+n]=rock[i];
	}
	for(int i =1;i<=2*n;i++)
	{
		sum[i]=sum[i-1]+rock[i];
	}
	memset(dp,99999999,sizeof(dp));
	for(int i =1;i<=2*n;i++) dp[i][i]=0;
	for(int i=1;i<n;i++)
	{
    	for(int j=1;j<=2*n-i;j++)
		{
    		for(int k=j;k<j+i;k++)
    		{
				dp[j][j+i]=min(dp[j][j+i],dp[j][k]+dp[k+1][j+i]+sum[j+i]-sum[j-1]);
				dp1[j][j+i]=max(dp1[j][j+i],dp1[j][k]+dp1[k+1][j+i]+sum[j+i]-sum[j-1]);
			}
		}
	}
	int ans=9999999999,ans1=0;
	for(int i=1;i<n;i++) ans=min(ans,dp[i][i+n-1]);
	for(int i =1;i<n;i++) ans1=max(ans1,dp1[i][i+n-1]);
    
    cout << ans <<" "<< ans1;
}
2024/7/1 09:20
加载中...