poj 2386 lake counting

来源:互联网 发布:sql to date函数 编辑:程序博客网 时间:2024/05/19 04:27

此题为搜索入门题

题意为求W连成一片的片数

思路:搜索W,ans++,再把上下左右左上左下右上右下的W标记,下次就搜不到这个了;

用的是最烂的的打表深搜

#include<iostream>#include<cstdio>#include<cstdlib>#include<cmath>using namespace std;char a[110][110];int p[110][110],sum;void dfs(int i,int j){p[i][j]=0;if(p[i+1][j]==1){dfs(i+1,j);}if(p[i-1][j]==1){dfs(i-1,j);}if(p[i][j-1]==1){dfs(i,j-1);}if(p[i][j+1]==1){dfs(i,j+1);}if(p[i+1][j+1]==1){dfs(i+1,j+1);}if(p[i+1][j-1]==1){dfs(i+1,j-1);}if(p[i-1][j+1]==1){dfs(i-1,j+1);}if(p[i-1][j-1]==1){dfs(i-1,j-1);}} int main(){int i,j,k,m,n;cin>>m>>n;getchar();for(i=1;i<=m;i++)for(j=1;j<=n;j++){cin>>a[i][j];if(a[i][j]=='W')p[i][j]=1;}for(i=1;i<=m;i++)for(j=1;j<=n;j++){if(p[i][j]==1){dfs(i,j);sum++;}} cout<<sum<<endl;return 0;}


0 0