zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    学习笔记_2012_4_13垃圾回收原理与String类的学习
    第五篇
    HTML练习代码
    上课第一天base关键字
    第四篇
    firebug使用指南
    HTML5的新特性
    UML建模
    CSS学习总结
    (转载)About me [my way]
  • 原文地址:https://www.cnblogs.com/duanqiong/p/4403453.html
Copyright © 2011-2022 走看看