求助
查看原帖
求助
1019983
Czero_2023楼主2024/7/14 15:16

样例过不了

蒟蒻实在是看不出问题了

代码:

#include <iostream>
#include <cstring>
using namespace std;
int ans,T,n,m,a[7][7];
bool vis[7][7];
int dx[9]={-1,-1,-1,0,0,0,1,1,1};
int dy[9]={-1,0,1,-1,0,1,-1,0,1};
void dfs(int x,int y,int sum)
{
	if(y==m+1){
		dfs(x+1,1,sum);
		return;
	}
	if(x==n+1){
		ans=max(ans,sum);
		return ;
	}
	dfs(x,y+1,sum);
	if(vis[x][y]==0)
	{
		for(int i=0;i<9;i++)
		{
			int nx=x+dx[i],ny=y+dy[i];
			if(nx>=1&&nx<=n&&ny>=1&&ny<=m)vis[nx][ny]=1;
		}
		dfs(x,y+1,sum+a[x][y]);
		for(int i=0;i<9;i++)
		{
			int nx=x+dx[i],ny=y+dy[i];
			if(nx>=1&&nx<=n&&ny>=1&&ny<=m)vis[nx][ny]=0;
		}
	}
}
int main()
{
	cin>>T;
	while(T--)
	{
		cin>>n>>m;ans=-1;
		memset(vis,0,sizeof vis);
		for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++)
				cin>>a[i][j];
		dfs(1,1,0);
		cout<<ans<<endl;
	}
	return 0;
}

轻喷

谢谢

2024/7/14 15:16
加载中...