c++只拿了40,求改
查看原帖
c++只拿了40,求改
759152
yinbe楼主2023/7/14 14:44
#include<iostream>
using namespace std;
char c[110][110];
bool flag[110][110]={0};
int m,n,cnt;
void search(int x,int y)
{
    if(flag[x][y])
    {
        return;
    }
    if(x>m||y>n||x<0||y<0)
    {
        return;
    }
    if(c[x][y]=='.')
    {
        return;
    }
    if(flag[x+1][y]||flag[x-1][y]||flag[x][y+1]||flag[x][y-1]||
    flag[x+1][y+1]||flag[x+1][y-1]||flag[x-1][y+1]||flag[x-1][y-1])
    {
        flag[x][y]=true;
        search(x+1,y);
        search(x,y+1);
        search(x,y-1);
        search(x-1,y);
        search(x+1,y+1);
        search(x-1,y+1);
        search(x+1,y-1);
        search(x-1,y-1);
        return; 
    }
    cnt++;
    flag[x][y]=true;
    search(x+1,y);
    search(x,y+1);
    search(x,y-1);
    search(x-1,y);
    search(x+1,y+1);
    search(x-1,y+1);
    search(x+1,y-1);
    search(x-1,y-1);
    return;
}
int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            cin>>c[i][j];
        }
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            if(c[i][j]=='W')
            { 
                search(i,j);
                flag[i][j]=true;
            }
        }
    }
    printf("%d",cnt);
    return 0;
}
2023/7/14 14:44
加载中...