求助取数游戏p1123
  • 板块学术版
  • 楼主TheRain_s
  • 当前回复1
  • 已保存回复1
  • 发布时间2021/9/6 19:54
  • 上次更新2023/11/4 07:22:29
查看原帖
求助取数游戏p1123
526339
TheRain_s楼主2021/9/6 19:54
#include<iostream>
#include<cstring>
using namespace std;
int n,m,a[25][25],b[25][25],sum,ans,t;
void dfs(int x,int y)
{
	if(y==m+1)
	{
		dfs(x+1,1);return;
	}
	if(x==n+1)
	{
		ans=max(ans,sum);return;
	}
	dfs(x,y+1);
	if(!b[x][y])
	{
		sum+=a[x][y];
		b[x+1][y]++;b[x-1][y]++;b[x][y+1]++;b[x][y-1]++;b[x-1][y-1]++;b[x-1][y+1]++;b[x+1][y+1]++;b[x+1][y-1]++;
		dfs(x,y+1);
		b[x+1][y]--;b[x-1][y]--;b[x][y+1]--;b[x][y-1]--;b[x-1][y-1]--;b[x-1][y+1]--;b[x+1][y+1]--;b[x+1][y-1]--;
		sum-=a[x][y];
	}
}
int main()
{
	
	cin>>t;
   while(t--)
	{memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
		cin>>n>>m;
		for(int i=1;i<=n;++i)
		for(int j=1;j<=m;++j)
		cin>>a[i][j];
		ans=0;
		dfs(1,1);
		cout<<ans<<endl;
	}
}
2021/9/6 19:54
加载中...