2386 Lake counting

来源:互联网 发布:门捷列夫 知乎 编辑:程序博客网 时间:2024/06/08 05:55
#include <stdio.h>#include <stdlib.h>#include <iostream>#include <memory.h>using namespace std;int n,m;int map[110][110],visit[110][110];int cou,fi,fj;int dir[16] = {0,1,0,-1,1,0,-1,0,1,1,1,-1,-1,1,-1,-1};int find(){for(int i=1; i<=n; i++)for(int j=1; j<=m; j++){if( !visit[i][j] && map[i][j] ){fi = i;fj = j;return 1;}}return 0;}void DFS(int i,int j){for(int k=0; k<16; k+=2){int a = i+dir[k];int b = j+dir[k+1];if( a>=1 && a<=n && b>=1 && b<=m && !visit[a][b] && map[a][b] ){visit[a][b] = 1;DFS(a,b);}}}void input(){char str[110];for(int i=1; i<=n; i++){cin >> str;for(int k=0; k<m; k++)    map[i][k+1] = ( str[k] == 'W'? 1:0);}}int main(void){while(cin >> n >> m && n){memset( visit,0,sizeof(visit));cou = 0;input();while( find() ){visit[fi][fj] = 1;DFS(fi,fj);cou++;}cout << cou << endl;}return 0;}
尚未看懂正在研究

0 0
原创粉丝点击