dfs,样例过但是提交wa
查看原帖
dfs,样例过但是提交wa
1304192
PANDA164楼主2024/4/1 00:23
#include <iostream>
#include <cstdio>
using namespace std;
//每列上黑棋的数量
int arr[10];
int n;
//棋盘
char b[10][10];
//白棋位置
int w[32][2];
int wc=0;
int ans[100];
int ac=0;
void dfs(int y,int x,int c)
{
    if(c==0||(y<10&&x>=0&&y>=0&&x<10&&b[y][x]=='B'))
    {
        b[y][x]='W';
        if(arr[x]>ans[ac]){ans[ac]=arr[x];ac++;}
        dfs(y+1,x+1,c+1);
        dfs(y+1,x-1,c+1);
        dfs(x-1,y-1,c+1);
        dfs(y-1,x+1,c+1);
    }
}
void input()
{
    for (int i = 0; i < 10; i++)
    {
        for (int j = 0; j < 10; j++)
        {            
            char c=getchar();
            if(c=='W'){w[wc][0]=i;w[wc][1]=j;wc++;}
            if (c=='B')
            {
                arr[j]++;
            }
            
            b[i][j]=c;
        }
        getchar();
    }
}
int main()
{
    scanf("%d",&n);
    for (int i = 0; i < n; i++)
    {
        if(!i)getchar();
        wc=0;
        for (int j = 0; j < 10; j++)
        {
            arr[j]=0;
        }
        
        input();
        for (int j = 0; j < wc; j++)
        {
            dfs(w[j][0],w[j][1],0);
        }
        
    }
    for (int i = 0; i < n; i++)
    {
        cout<<ans[i]<<'\n';
    }
    
}
2024/4/1 00:23
加载中...