样例第一个错了,后两个对了,求bug
查看原帖
样例第一个错了,后两个对了,求bug
330433
我是辛der楼主2021/5/13 21:41
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<string>
#include<string.h>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
using namespace std;
int t,n,m,map[7][7],have[7][7],ans; 
void dfs(int si,int sj,int sum)
{
	if(sum>ans) ans=sum;
	for(register int i=si;i<=n;i++)
	{
		for(register int j=sj;j<=m;j++)
		{
			if(have[i-1][j]||have[i+1][j]||have[i][j-1]||have[i][j+1]||have[i+1][j+1]||have[i+1][j-1]||have[i-1][j+1]||have[i-1][j-1]) continue;
			have[i][j]=1;
			int di,dj;
			if(dj==m) dj=1,di=i+1;
			else dj=j+1,di=i;
			dfs(di,dj,sum+map[i][j]);
			have[i][j]=0;
		}
	}
	return;
}
int main()
{
	scanf("%d",&t);
	for(register int q=1;q<=t;q++)
	{
		ans=-10;
		scanf("%d %d",&n,&m);
		for(register int i=1;i<=n;i++)
		{
			for(register int j=1;j<=m;j++)
			{
				cin>>map[i][j];
				have[i][j]=0;
			}
		}
		dfs(1,1,0);
		printf("%d\n",ans);
	}
	return 0;
}

2021/5/13 21:41
加载中...