zoukankan      html  css  js  c++  java
  • 四连块dfs

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 
     4 const int MAX = 100;
     5 char arr[MAX][MAX];//存放 “w 和 . ”
     6 
     7 int nx[4] = {0,1,0,-1};//4个坐标(0,1)(1,0)(0,-1)(-1,0) 
     8 int ny[4] = {1,0,-1,0};
     9 
    10 int n,m;//n行,m列 
    11 
    12 
    13 void init();
    14 void solve();
    15 void dfs(int x,int y);
    16 
    17 
    18 void init(){
    19     cin>>n>>m;//输入行数列数 
    20     for(int i=0;i<n;i++){
    21         for(int j=0;j<m;j++){
    22             cin>>arr[i][j];//输入“w 和 . ” 
    23         }
    24     }    
    25     solve();
    26 } 
    27 
    28 
    29 void solve(){
    30     int result = 0;
    31     for(int i=0;i<n;i++){
    32         for(int j=0;j<m;j++){
    33             if(arr[i][j] == 'w'||arr[i][j] == 'W'){
    34                 dfs(i,j);//搜索(i,j)周围的 w 
    35                 result++;
    36             }
    37         }
    38     }
    39     cout<<"四连块的数量为"<<result<<endl; 
    40 }
    41 
    42 void dfs(int x,int y){
    43     
    44     arr[x][y] = '.';
    45     for(int i=0;i<4;i++){
    46         int X=x+nx[i];
    47         int Y=y+ny[i];
    48         if(X>=0&&X<=n&&Y>=0&&Y<=m&&(arr[X][Y]=='w'||arr[X][Y] == 'W')){
    49             dfs(X,Y);
    50         }
    51     }
    52 }
    53 
    54 int main(){
    55     init();
    56     return 0;
    57 }
  • 相关阅读:
    Java 运动模糊
    Efounds笔试
    Algorithms code
    Java 画图
    Java 笔记
    Java 对二值化图片识别连通域
    工厂模式
    数据库克隆
    SQL优化
    微信调起jssdk一闪而过
  • 原文地址:https://www.cnblogs.com/xuecl/p/12362767.html
Copyright © 2011-2022 走看看