50分,求助
查看原帖
50分,求助
1005749
xzz_0611楼主2023/12/19 21:04

#5-10错了

#include<bits/stdc++.h>
using namespace std;
bool flag[150][150],arr[150][150];
void count(int x,int y)
{
	if(arr[x+1][y-1]&&flag[x+1][y-1])
	{
		flag[x+1][y-1]=false;
		count(x+1,y-1);
	}
	if(arr[x+1][y]&&flag[x+1][y])
	{
		flag[x+1][y]=false;
		count(x+1,y);
	}
	if(arr[x+1][y+1]&&flag[x+1][y+1])
	{
		flag[x+1][y+1]=false;
		count(x+1,y+1);
	}
	if(arr[x][y+1]&&flag[x][y+1])
	{
		flag[x][y+1]=false;
		count(x,y+1);
	}
	if(arr[x-1][y-1]&&flag[x-1][y-1])
	{
		flag[x-1][y-1]=false;
		count(x-1,y-1);
	}
	if(arr[x-1][y]&&flag[x-1][y])
	{
		flag[x-1][y]=false;
		count(x-1,y);
	}
	if(arr[x-1][y+1]&&flag[x-1][y+1])
	{
		flag[x-1][y+1]=false;
		count(x-1,y+1);
	}
}
int main()
{
	string op;
	int x,y,ans=0;
	cin>>x>>y;
	for(int i=1;i<=x;i++)
	{
		cin>>op;
		for(int j=1;j<=y;j++)
		{
			flag[i][j]=true;
			if(op[j-1]=='W') arr[i][j]=true;
			else arr[i][j]=false;
		}
	}
	for(int i=1;i<=x;i++)
		for(int j=1;j<=y;j++)
			if(arr[i][j]&&flag[i][j])
			{
				count(i,j);
				ans++;
			}
	cout<<ans;
   return 0;
}
2023/12/19 21:04
加载中...