POJ 2386 Lake Counting G++

xiaoxiao2021-02-28  103

#include <iostream> using namespace std; char a[101][101]; int NUM1, NUM2; void dfs(int x,int y) { a[x][y]='.'; if(((x-1)>=0)&&(a[x-1][y]=='W'))//上 { dfs(x-1,y); } if(((x+1)<NUM1)&&(a[x+1][y]=='W'))//下 { dfs(x+1,y); } if(((y-1)>=0)&&(a[x][y-1]=='W'))//左 { dfs(x,y-1); } if(((y+1)<NUM2)&&(a[x][y+1]=='W'))//右 { dfs(x,y+1); } if(((x-1)>=0)&&((y-1)>=0)&&(a[x-1][y-1]=='W'))//左上 { dfs(x-1,y-1); } if(((x+1)<NUM1)&&((y+1)<NUM2)&&(a[x+1][y+1]=='W'))//右下 { dfs(x+1,y+1); } if(((x-1)>=0)&&((y+1)<NUM2)&&(a[x-1][y+1]=='W'))//右上 { dfs(x-1,y+1); } if(((x+1)<NUM1)&&((y-1)>=0)&&(a[x+1][y-1]=='W'))//左下 { dfs(x+1,y-1); } } int main() { cin>>NUM1>>NUM2; for(int i=0;i<NUM1;i++) { for(int j=0;j<NUM2;j++) { cin>>a[i][j]; } } int jg=0; for(int i=0;i<NUM1;i++) { for(int j=0;j<NUM2;j++) { if(a[i][j]=='W') { jg++; dfs(i,j); } } } cout<<jg; /* cout<<endl; for(int i=0;i<NUM1;i++) { for(int j=0;j<NUM2;j++) { cout<<a[i][j]<<" "; } cout<<endl; }*/ return 0; }

转载请注明原文地址: https://www.6miu.com/read-74859.html

最新回复(0)