poj 2386 Lake Counting

来源:互联网 发布:常州淘宝运营助理工资 编辑:程序博客网 时间:2024/06/01 08:40
#include<stdio.h>#define MAX_N 105#define MAX_M 105int N,M;char field[MAX_N][MAX_M+1];//园子//现在位置(x,y)//每一次dfs把一堆水变为'.'void dfs(int x,int y) {//将现在所在位置替换为field[x][y]='.';//循环遍历移动的8个方向3*3-(0,0)刚好8个方向int dx,dy;for (dx=-1;dx<=1;dx++) {for(dy=-1;dy<=1;dy++) {//向x方向移动dx,向y方向移动dy,移动的结果为(nx,ny)int nx=x+dx,ny=y+dy;//判断(nx,ny)是不是在园子内,以及是否有积水if (0<=nx && nx < N && 0<=ny && ny <M && field[nx][ny]=='W') dfs(nx,ny);}}return;}void solve() {int res=0;int i,j;for(i=0;i<N;i++) {for(j=0;j<M;j++) {if (field[i][j]=='W') {//从有W的地方开始fdsdfs(i,j);res++;}}}printf("%d\n",res);}int main() {#ifndef ONLINE_JUDGEfreopen("in.txt","r",stdin);#endifwhile(scanf("%d%d",&N,&M)!=EOF) {int i,j;for(i=0;i<N;i++) {scanf("%s",field[i]);}solve();}}

0 0
原创粉丝点击