• 7.14dfs例题:水洼数


    水洼数:
    有一个大小为 N*M 的园子,雨后积起了水。八连通的积水被认为是连接在一起的。请求出园子里总共有多少水洼?(八连通指的是下图中相对 W 的*的部分)

     ***
     *W*
     ***

     限制条件
     N, M ≤ 100

     样例:

     输入
     N=10, M=12

     园子如下图('W'表示积水, '.'表示没有积水)

     W........WW.
     .WWW.....WWW
     ....WW...WW.
     .........WW.
     .........W..
     ..W......W..
     .W.W.....WW.
     W.W.W.....W.
     .W.W......W.
     ..W.......W.

     输出
     3

    思路:
    把周围相连的积水用dfs挨个消除替换成没有积水,每消除一滩积水,计数+1

     1 import java.util.Scanner;
     2 
     3 public class Seven_14dfs竞赛题水洼数 {
     4     private static int n;
     5     private static int m;
     6 
     7     public static void main(String[] args) {
     8         Scanner sc = new Scanner(System.in);
     9         n = sc.nextInt();
    10         m = sc.nextInt();
    11         char[][] a = new char[n][];
    12         for (int i = 0; i < n; i++) {
    13             a[i] = sc.next().toCharArray();
    14         }
    15         int cnt = 0;
    16         for (int i = 0; i < n; i++) {
    17             for (int j = 0; j < m; j++) {
    18                 if (a[i][j] == 'W') {
    19                     dfs(a, i, j);// 清除一个水洼
    20                     cnt++;
    21                 }
    22             }
    23         }
    24         System.out.println(cnt);
    25     }
    26 
    27     private static void dfs(char[][] a, int i, int j) {
    28         a[i][j] = '.';
    29 
    30         for (int k = -1; k < 2; k++) {// -1,0,1
    31             for (int l = -1; l < 2; l++) {// -1,0,1
    32                 if (k == 0 && l == 0)
    33                     continue;
    34 
    35                 if (i + k >= 0 && i + k <= n - 1 && j + l >= 0
    36                         && j + l <= m - 1) {
    37                     if (a[i + k][j + l] == 'W')
    38                         dfs(a, i + k, j + l);
    39                 }
    40             }
    41         }
    42     }
    43 
    44 }
  • 相关阅读:
    P1016 旅行家的预算
    导航菜单全部解释调用外部样式
    css调用外部样式和css样式说明剧中显示
    两种调用外部样式的方法
    css行内样式
    css选择器集体声明
    CSS用类选择器在本页写样式
    CSS用Id选择器在本页写样式
    css用标签选择器在本页写样式
    CSS本页写样式
  • 原文地址:https://www.cnblogs.com/z1110/p/12619996.html
Copyright © 2020-2023  润新知