为什么可以用方格取数的源码过?不是不能交叉吗?
查看原帖
为什么可以用方格取数的源码过?不是不能交叉吗?
291373
gouza12356楼主2021/11/12 18:08
#include<bits/stdc++.h>
#define mkp make_pair
using namespace std;
const int N=13;
const int INF=0x3f3f3f3f;
int ma[N][N]; 
long long dp[N][N][N][N];
int main(){
	int m;
	int n,x,y;
	cin>>m>>n;
	for(int i=1;i<=m;i++){
		for(int j=1;j<=n;j++){
			cin>>ma[i][j];
		}
	}
	for(int i=1;i<=m;i++){
		for(int j=1;j<=m;j++){
			for(int k=1;k<=m;k++){
				for(int l=1;l<=m;l++){
					dp[i][j][k][l]=ma[i][j]+ma[k][l]+max(max(dp[i-1][j][k-1][l],dp[i][j-1][k-1][l]),max(dp[i][j-1][k][l-1],dp[i-1][j][k][l-1]));
					if(i==k&&j==l)dp[i][j][k][l]-=ma[k][l];
				}
			}
		}
	}
	cout<<dp[m][m][m][m]<<endl;
}
2021/11/12 18:08
加载中...