DFS题目啊。看通过率就知道非常简单的。一下付代码,大家自己看下。
#include<iostream>
using namespace std;
char array[100][100];
int n,m;int count=0;
void dfs(int i,int j)
{
if(i<0||i>n||j<0||j>m)
return ;
if(array[i][j]!='W')
return ;
array[i][j]='.';
dfs(i-1,j);dfs(i+1,j);dfs(i,j-1);dfs(i,j+1);dfs(i-1,j-1);dfs(i-1,j+1);dfs(i+1,j-1);dfs(i+1,j+1);
}
void check()
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(array[i][j]=='W')
{
dfs(i,j);
count++;
}
}
}
}
int main()
{
cin>>n>>m;
for( int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>array[i][j];
}
}
check();
cout<<count<<endl;
return 0;
}
posted on 2010-08-18 19:20
崔佳星 阅读(1231)
评论(0) 编辑 收藏 引用