四个WA两个TLE,求助
  • 板块P1123 取数游戏
  • 楼主CSZD
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/10/10 18:50
  • 上次更新2023/10/27 07:58:41
查看原帖
四个WA两个TLE,求助
495599
CSZD楼主2022/10/10 18:50
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int t,n,m,ans;
int f[10][10],s[10][10];
int xx[8]={1,-1,0,0,1,1,-1,-1},yy[8]={0,0,1,-1,1,-1,1,-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;
	}
	if(!f[x][y])
	{
		for(int i=0;i<8;i++)
	        f[x+xx[i]][y+yy[i]]=1;
	    dfs(x,y+1,sum+s[x][y]);
	    for(int i=0;i<8;i++)
	        f[x+xx[i]][y+yy[i]]=0;
	}
	dfs(x,y+1,sum);
	return;
}
int main()
{
	cin>>t;
	for(int i=1;i<=t;i++)
	{
		memset(f,0,sizeof(f));
		memset(s,0,sizeof(s));
		cin>>n>>m;
		for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++)
		    	scanf("%d",&s[i][j]);       
		dfs(1,1,0);
		cout<<ans<<endl;
		ans=0;
	}
	return 0;
}

就只是很朴素的深搜

2022/10/10 18:50
加载中...