42求助
查看原帖
42求助
1512108
QirErl楼主2024/12/1 17:55
#include<bits/stdc++.h>
using namespace std;
int n;
int a[1005][1005];
int dp[55][55][55][55];
/*dp[i][j][k][l] = max{dp[i - 1][j][k - 1][l] ,
 						dp[i][j - 1][k - 1][l] , 
						dp[i - 1][j][k][l - 1] ,
						 dp[i][j - 1][k][l - 1]};*/
int al,b,c;
int main(){
	cin >> n; 
    for(;;){//读入 {
        int t1=0,t2=0,t3=0;
        cin>>t1>>t2>>t3;
        if(t1==0&&t2==0&&t3==0) break;
        a[t1][t2]=t3;
    }
	for(int i = 1;i <= n;i++){
		for(int j = 1;j <= n;j++){
			for(int k = 1;k <= n;k++){
				for(int l = 1;l <= n;l++){
					if(i != k||j != l) {
						dp[i][j][k][l] = max(  max(dp[i-1][j][k-1][l] , dp[i][j-1][k-1][l])  ,  max(dp[i-1][j][k][l-1] , dp[i][j-1][k][l-1])  );
					
						dp[i][j][k][l] = dp[i][j][k][l] + a[i][j] + a[k][l];
					//	cout<<dp[i][j][k][l]<<" ";
					}

				}
			}			
		}
	}
	cout<<dp[n][n - 1][n - 1][n];
	return 0;
} 
2024/12/1 17:55
加载中...