zoukankan      html  css  js  c++  java
  • vjudge Lake Counting 搜索 水池 8方向

    原题链接https://vjudge.net/contest/331118#problem/A

    题目:

    现在有一个M*N的方阵,每个格子里面是.或者W,点代表水,然后如果在这个点的周围,即8个方向内还有w,那么可以连成一片,即这两个w看作为1个

    输入:M N, 还有方阵

    输出:有几个水池

    样例输入

    10 12
    W       .       .      .       .       .      .      .      .       W      W      .
    .        W     W    W     .       .      .      .      .       W      W     W   
    .        .        .      .      W     W    .       .      .       W      W      .
    .        .        .      .       .       .      .       .      .       W      W      .
    .        .        .      .       .       .      .       .      .       W       .       .
    .        .       W     .       .       .      .       .      .       W       .       .
    .       W      .      W      .       .     .        .      .      W       W      .
    W     .        W    .      W       .     .       .       .      .         W       .
    .       W      .     W      .        .     .        .       .      .        W       .
    .       .        W    .        .        .     .        .      .      .         W      .

     注释:这里相邻两个字符之间的空格是为了方便看,实际输入的时候是没有的

    样例输出

    3

    代码:

    #include<stdio.h>
    #include<iostream>
    using namespace std;
    int sum=0;
    char G[105][105];
    bool vis[105][105];
    int n,m,d[8]= {-1,-1,-1,0, 0, 1,1,1};
    int     z[8]= {-1, 0, 1,-1,1,-1,0,1};  //8个方向
    void dfs(int q,int w) {
     if(G[q][w]=='W'&&!vis[q][w]&&q<=n&&w<=m && q>0 && w>0) {
      vis[q][w]=true;
      for(int i=0; i<8; i++) {
       if(G[q+d[i]][w+z[i]]=='W'   &&    !vis[q+d[i]][w+z[i]]     &&(q+d[i])<=n&&(w+z[i])<=m &&(q+d[i])>0&&(w+z[i])>0 ) {
        dfs(q+d[i],w+z[i]);
       }
      }
     }
    }
    int main() {
     cin >> n >> m;
     for(int i=1; i<=n; i++) {
      scanf("%s",G[i]+1);
     }
     for(int q=1; q<=n; q++) {
      for(int w=1; w<=m; w++) {
       if(G[q][w]=='W' && !vis[q][w]) sum++;
       dfs(q,w);
      }
     }
     cout<<sum;
     return 0;
    }

  • 相关阅读:
    java8新特性学习:stream与lambda
    Storm实践(一):基础知识
    Google Protocol Buffer入门
    zeromq实践
    maven实践--你所需要了解的maven
    springcloud实践(一)服务发现:Eureka
    职责链模式(chain of responsibility Pattern)
    代理模式 (Proxy Pattern)
    享元模式(Flyweight Pattern)
    外观模式(Facade Pattern)
  • 原文地址:https://www.cnblogs.com/QingyuYYYYY/p/11625525.html
Copyright © 2011-2022 走看看