求调
查看原帖
求调
912066
Andy2011_swsgroitfh楼主2024/6/18 11:16
#include <bits/stdc++.h>
using namespace std;
int t;
int n,m;
int mapp[10][10];
bool vis[10][10];
int dx[] = {0,-1,-1,-1, 0, 0, 1, 1, 1};
int dy[] = {0,-1, 0, 1,-1, 1,-1, 0, 1};
int anss,ans;
void dfs(int x,int y)
{
    if (y > m)
    {
		dfs(x+1,1);
		return ;
	}
	if (x > n)
    { 
		anss = max(anss,ans);
		return ;
	}
    dfs(x,y+1);
    if (!vis[x][y])
    {
        for (int i = 1; i <= 8; i ++)
        {
            vis[x+dx[i]][y+dy[i]] = true;
        }
        ans += mapp[x][y];
        dfs(x,y+1);
        for (int i = 1; i <= 8; i ++)
        {
            vis[x+dx[i]][y+dy[i]] = false;
        }
        ans -= mapp[x][y];
    }
}
int main()
{
    cin>>t;
    for (int i = 1; i <= t; i ++)
    {
        anss = 0;
        memset(mapp,0,sizeof(mapp));
        memset(vis,false,sizeof(vis));
        cin>>n>>m;
        for (int j = 1; j <= n; j ++)
        {
            for (int k = 1; k <= m; k ++)
            {
                cin>>mapp[j][k];
            }
        }
        dfs(1,1);
        cout<<anss<<endl;
    }
}
2024/6/18 11:16
加载中...