求助取数游戏p1123
查看原帖
求助取数游戏p1123
526339
TheRain_s楼主2021/9/7 19:44
#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/7 19:44
加载中...