• POJ 2386 java实现


    描述:

    Due to recent rains, water has pooled in various places in Farmer John's field, which is represented by a rectangle of N x M (1 <= N <= 100; 1 <= M <= 100) squares. Each square contains either water ('W') or dry land ('.'). Farmer John would like to figure out how many ponds have formed in his field. A pond is a connected set of squares with water in them, where a square is considered adjacent to all eight of its neighbors. 
    Given a diagram of Farmer John's field, determine how many ponds he has.

    Input

    * Line 1: Two space-separated integers: N and M 
    * Lines 2..N+1: M characters per line representing one row of Farmer John's field. Each character is either 'W' or '.'. The characters do not have spaces between them.

    Output

    * Line 1: The number of ponds in Farmer John's field.

    Sample Input

    10 12
    W........WW.
    .WWW.....WWW
    ....WW...WW.
    .........WW.
    .........W..
    ..W......W..
    .W.W.....WW.
    W.W.W.....W.
    .W.W......W.
    ..W.......W.
     1 import java.util.Scanner;
     2 public class Main {
     3 
     4 
     5     private static char filed[][]=new char[100][100];
     6     public static void search(int x,int y,int n,int m){
     7         filed[x][y]='.';
     8         for(int i=-1;i<2;i++)
     9             for(int j=-1;j<2;j++){
    10                 int px=x+i,py=y+j;
    11                 if(px>=0&&py>=0&&px<n&&py<m){
    12                     if(filed[px][py]=='W'){
    13                         filed[px][py]='.';
    14                         Main.search(px, py, n, m);
    15                     }
    16                 }
    17             }
    18     }
    19     public static void main(String[] args) {
    20         // write your code here
    21         int n=0,m=0;
    22         int num=0;   //池塘总数
    23         String s;
    24         Scanner sc = new Scanner(System.in);
    25         n=sc.nextInt();
    26         m=sc.nextInt();
    27         for(int i=0;i<n;i++){            //输入W和.
    28             s=sc.next();
    29             for(int j=0;j<m;j++){
    30                 filed[i][j]=s.charAt(j);  //把W和.存入数组
    31             }
    32         }
    33         sc.close();
    34         for(int i=0;i<n;i++)
    35             for(int j=0;j<m;j++){
    36                 if(filed[i][j]=='W'){
    37                     Main.search(i,j,n,m);
    38                     num++;
    39                 }
    40             }
    41         System.out.println(num);
    42 
    43 
    44     }
    45 }
  • 相关阅读:
    数据库课程设计报告学生学籍管理信息系统
    C++ 指针
    解决知乎推荐视频问题
    踩坑指南接口返回前端json数据报错前端无法接收到
    java的接口如何设计异常的理解
    关于webapp项目打war包的问题
    关于继承的一点理解
    hadoop简介
    杨卫华:新浪微博的架构发展历程(转)
    linux server 配置vim编程位置
  • 原文地址:https://www.cnblogs.com/duanqiong/p/4403453.html
Copyright © 2020-2023  润新知