统计W 块
Description
给你一个N行M列矩形,矩形中只含’.’和’W’,要你统计含有多少个’W’的块。一个W与其相邻的八个方向上的W同属于一个块。
Input
第一行 N,M (1 <= N <= 100; 1 <= M <= 100)
以下是一个N行M列的矩形。
Output
只有一行,矩形中含有的W块的个数。
Sample Input
10 12 W........WW. .WWW.....WWW ....WW...WW. .........WW. .........W.. ..W......W.. .W.W.....WW. W.W.W.....W. .W.W......W. ..W.......W.
Sample Output
3 简单搜索:
#include<iostream>
using namespace std;
char a[100][100];
int c,d,n,m;
int find(int i,int j)
{
for(c=i;c<n;c++)
for(d=j;d<m;d++)
if(a[c][d]=='W')
return 1;
return 0;
}
void sousuo(int i,int j)
{
if(i>=0&&i<n&&j>=0&&j<m&&a[i][j]=='W')
{
a[i][j]='.';
sousuo(i-1,j-1);
sousuo(i-1,j);
sousuo(i-1,j+1);
sousuo(i,j+1);
sousuo(i+1,j+1);
sousuo(i+1,j);
sousuo(i+1,j-1);
sousuo(i,j-1);
}
}
int main()
{
int i,j;
int sum=0;
cin>>n>>m;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
cin>>a[i][j];
while(find(0,0))
{
sousuo(c,d);
sum++;
}
cout<<sum<<endl;
return 0;
}