只有3个AC
查看原帖
只有3个AC
392935
qzhwDGS楼主2021/8/23 14:50

帮我看看为啥:

#include<bits/stdc++.h>
using namespace std;
int n,m;
char c[102][102];
int s=0;
void dfs(int a,int b)
{
	if(a>n||a<1||b>m||b<1) 
	    return;
	if(c[a][b]=='.') 
	    return;
    if(c[a][b]=='W');
    {
	     if (c[a][b+1]!='W' and c[a][b-1]!='W' )
	    {if (c[a+1][b]!='W' and c[a-1][b]!='W' )
		{if (c[a+1][b+1]!='W' and c[a-1][b-1]!='W')
		{if (c[a+1][b-1]!='W' and c[a-1][b+1]!='W')
		{s++;
		}}}}
	}
	c[a][b]='.';
	dfs(a+1,b);
	dfs(a,b+1);
	dfs(a-1,b);
	dfs(a,b-1);
	dfs(a+1,b+1);
	dfs(a-1,b+1);
	dfs(a+1,b-1);
	dfs(a-1,b-1);
}
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') 
		    {
		        dfs(i,j);
		    }
		} 
	}
	cout<<s;
	return 0;
}
2021/8/23 14:50
加载中...