听说长得帅的都会帮我调试(doge)
查看原帖
听说长得帅的都会帮我调试(doge)
735141
hiGh_sPeEd楼主2023/10/5 09:46
#include <bits/stdc++.h>
using namespace std;
int n,m,asd[1001][1001],qwe[60][60][60][60];

int dfs(int x1,int y1,int x2,int y2){
	if(x1==n && y2==m && x2==1 && y2==1)return 0;
	if(qwe[x1][y1][x2][y2]!=-1)return qwe[x1][y1][x2][y2]; 
	int sum=0;
	if(x1<n && x2>1)sum=max(sum,dfs(x1+1,y1,x2-1,y2)+asd[x1+1][y1]+asd[x2-1][y2]-asd[x1+1][y1]*(x1+1==x2-1 && y1==y2));
	if(x1<n && y2>1)sum=max(sum,dfs(x1+1,y1,x2,y2-1)+asd[x1+1][y1]+asd[x2][y2-1]-asd[x1+1][y1]*(x1+1==x2 && y1==y2-1));
	if(y1<m && x2>1)sum=max(sum,dfs(x1,y1+1,x2-1,y2)+asd[x1][y1+1]+asd[x2-1][y2]-asd[x1][y1+1]*(x1==x2-1 && y1+1==y2));
	if(y1<m && y2>1)sum=max(sum,dfs(x1,y1+1,x2,y2-1)+asd[x1][y1+1]+asd[x2][y2-1]-asd[x1][y1+1]*(x1==x2 && y1+1==y2-1));
	qwe[x1][y1][x2][y2]=sum;
	return sum;
}

int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>asd[i][j];
		}
	}
	memset(qwe,-1,sizeof qwe);
	cout<<dfs(1,1,n,m);
	return 0;
}
2023/10/5 09:46
加载中...