dfs死了求调
  • 板块灌水区
  • 楼主TGD_R_123
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/9/4 14:42
  • 上次更新2024/9/4 19:52:03
查看原帖
dfs死了求调
1060074
TGD_R_123楼主2024/9/4 14:42

rt.

#include<bits/stdc++.h>
using namespace std;
int T,n,m,data[7][7];
/*
   -2 -1  0  1  2
-2  y  y  y  y  y
-1  y  n  n  n  y
0   y  n  *  n  y
1   y  n  n  n  y
2   y  y  y  y  y
*/
int dx[]={0,-2,-1,0,1,2,2,2,2,2,1,0,-1,-2,-2,-2,-2};
int dy[]={0,-2,-2,-2,-2,-2,-1,0,1,2,2,2,2,2,1,0,-1};
bool b[7][7];
long long max(long long a,long long b){
	return a>b?a:b;
}
long long dfs(int x,int y,long long ans){
	ans+=data[x][y];
//	cout<<x<<","<<y<<"  ans:"<<ans<<endl<<"     ↓"<<endl;
	for(int i=1;i<=16;i++){
		int tx=x+dx[i],ty=y+dy[i];
		if(tx>=1 and tx<=n and ty>=1 and ty<=m and !b[tx][ty]){
			b[tx][ty]=true;
			ans=max(dfs(tx,ty,ans),ans);
			b[tx][ty]=false;
		}
	}
	return ans;
}
int main(){
	cin>>T;
	for(int i=1;i<=T;i++){
		cin>>n>>m;
		long long maxsum=-114514;
		for(int j=1;j<=n;j++)
			for(int k=1;k<=m;k++) cin>>data[j][k];
		for(int j=1;j<=n;j++)
			for(int k=1;k<=m;k++) maxsum=max(dfs(j,k,0),maxsum);
		cout<<maxsum<<endl;
	}
	return 0;
} 

运行到第一组数据的时候直接就死循环了,求调

2024/9/4 14:42
加载中...