疑问
查看原帖
疑问
1431995
xiayuanxia楼主2025/2/8 17:52
#include<bits/stdc++.h>
using namespace std;
int n,dp[500][500],ans=INT_MIN;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>dp[i][i];
		ans=max(ans,dp[i][i]);
	} 
	for(int len=2;len<=n;len++){
		
		for(int i=1;i<=n-len+1;i++){
			
			int j=len+i-1;
			
			for(int k=i;k<j;k++){
				if(dp[i][j]&&dp[i][k]&&dp[k+1][j]&&dp[i][k]==dp[k+1][j]){
					
					dp[i][j]=dp[i][k]+dp[k+1][j];
					
					break;
				}
			}
			for(int l=i,r=j;l<r-1;){
				
				if(dp[i][j]) break;
				
				if(!dp[i][l]) ++l;
				
				else if(!dp[r][j]) --r;
				
				else if(dp[i][l]==dp[r][j]){
					if(dp[l+1][r-1]) {
						dp[i][j]=dp[i][l]+dp[l+1][r-1]+dp[r][j];
					}
					else ++l, --r;
				}else if (dp[i][l] < dp[r][j]) ++l;
				
                else if (dp[i][l] > dp[r][j]) --r;
			}
			ans=max(ans,dp[i][j]);
		}
	}
	cout<<ans;
	return 0;
}
#include <bits/stdc++.h>
using namespace std;

int n, dp[500][500], ans = INT_MIN; // Initialize ans to a very small value

int main() {
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> dp[i][i];
        ans = max(ans, dp[i][i]);
    }

    for (int len = 2; len <= n; len++) {
        for (int i = 1; i <= n - len + 1; i++) {
            int j = i + len - 1;
            for (int k = i; k < j; k++) {
                if (dp[i][k] && dp[k + 1][j] && dp[i][k] == dp[k + 1][j]) {
                    dp[i][j] = dp[i][k] + dp[k + 1][j];
                    break;
                }
            }
            for (int l = i, r = j; l < r - 1;) {
                if (dp[i][j]) break;
                if (!dp[i][l]) ++l;
                else if (!dp[r][j]) --r;
                else if (dp[i][l] == dp[r][j]) {
                    if (dp[l + 1][r - 1]) dp[i][j] = dp[i][l] + dp[l + 1][r - 1] + dp[r][j];
                    else ++l, --r;
                } else if (dp[i][l] < dp[r][j]) ++l;
                else if (dp[i][l] > dp[r][j]) --r;
            }
            ans = max(ans, dp[i][j]);
        }
    }
    cout << ans;
    return 0;
}





上述两代码基本一样,但是一个过不了样例1,一个可以,这是为何?(人机好厉害,改一下就对了)
2025/2/8 17:52
加载中...