60分,RE了4个,求助
查看原帖
60分,RE了4个,求助
601314
xmjxxx楼主2023/5/2 23:48
#include<bits/stdc++.h>
using namespace std;
int dp[110][55][55],f[55][55],m,n;
int main(){
	cin>>m>>n;
	
	for(int i=1;i<=m;i++)
		for(int j=1;j<=n;j++){
			cin>>f[i][j];
		}
				
	dp[3][1][2]=f[1][2]+f[2][1];
	dp[3][2][1]=f[2][1]+f[1][2];
	
	for(int i=3;i<=m+n;i++)
		for(int j=1;j<i;j++)
			for(int k=1;k<i;k++){
				if(j!=k){
					if(j-k==1)
						dp[i][j][k]=max(max(dp[i-1][j-1][k-1],dp[i-1][j][k-1]),dp[i-1][j][k])+f[i-j][j]+f[i-k][k];
					else if(k-j==1)
						dp[i][j][k]=max(dp[i-1][j-1][k-1],max(dp[i-1][j][k],dp[i-1][j-1][k]))+f[i-j][j]+f[i-k][k];
					else
						dp[i][j][k]=max(max(dp[i-1][j-1][k-1],dp[i-1][j][k-1]),max(dp[i-1][j][k],dp[i-1][j-1][k]))+f[i-j][j]+f[i-k][k];
				}
			}
			cout<<max(dp[m+n-1][n-1][n],dp[m+n-1][n][n-1]);
	
	return 0;
}

自己在编译器测试时正常,也没有超时,洛谷编译时就RE了4个,想破脑袋也不知道是什么原因。

2023/5/2 23:48
加载中...