当前位置: 代码迷 >> 综合 >> poj2386
  详细解决方案

poj2386

热度:105   发布时间:2023-10-10 07:32:49.0

2018-1-23

直接使用广搜求解即可,注意这里的题目:九方格里面的都可以视为同一区域的即
可。。。
#include<iostream>
#include<cstring>
using namespace std;const int MAX=100;
char x[MAX+1][MAX+1];
bool f[MAX+1][MAX+1];
int n,m;bool isvaild(int p,int q){if (p<0||p>=n||q<0||q>=m) return false;return true;
}void dfs(int p,int q){for (int i=-1;i<=1;i++){for (int j=-1;j<=1;j++){int a=i+p;int b=j+q;if (isvaild(a,b)&&!f[a][b]&&x[a][b]=='W'){f[a][b]=true;dfs(a,b);}}}
}int main(){while (cin>>n>>m){int res=0;memset(f,false,sizeof(f));for (int i=0;i<n;i++){for (int j=0;j<m;j++){cin>>x[i][j];}}for (int i=0;i<n;i++){for (int j=0;j<m;j++){if (!f[i][j]&&x[i][j]=='W'){res++;dfs(i,j);}}}cout<<res<<endl;}return 0;
}