zoukankan      html  css  js  c++  java
  • 相聚 桂林电子科技大学第三届ACM程序设计竞赛

    题目链接:https://ac.nowcoder.com/acm/contest/558/D

      就是求有多少块区域,用DFS就可以解决,一遇到一个1就从其开始深搜,将其所在的区域块覆灭(变为0),再遇到一个1,重复此操作。

    Accept

    import java.util.Scanner;
    
    public class Main {
        
        static int old=0;
        static int N;
        static int M;
        static char array[][];
        static int x[]={-1,0,1,0};    //上左下右
        static int y[]={0,1,0,-1};
        
        static void solve(char array[][],int i,int j){
            array[i][j]='0';
            for(int d=0;d<4;d++){
                int dx=i+x[d];
                int dy=j+y[d];
                if(dx<0 || dy<0 || dx>N-1 || dy>M-1){    //越界判断
                    continue;
                }
                if(array[dx][dy]=='1'){    //深搜覆盖这个岛屿
                    array[dx][dy]='0';
                    solve(array,dx,dy);
                }
            }
        }
    
        public static void main(String[] args){
            Scanner reader=new Scanner(System.in);
            int T=reader.nextInt();
            while(T>=1){
                 old=0;
                 N=reader.nextInt();
                 M=reader.nextInt();
                 array=new char[N][M];
                 for(int i=0;i<N;i++){
                     String s=reader.next();
                     array[i]=s.toCharArray();
                 }
    //             for(int i=0;i<N;i++){
    //                 for(int j=0;j<M;j++){
    //                     System.out.print(array[i][j]);
    //                 }
    //                 System.out.println();
    //             }
                 //第一次扫描
                 for(int i=0;i<N;i++){
                     for(int j=0;j<M;j++){
                         if(array[i][j]=='1'){
                             old++;
                             solve(array,i,j);
                         }
                     }
                 }
                
                 System.out.println(old);
                 T--;
            }
        }
    }
  • 相关阅读:
    LeetCode Reverse Nodes in k-Group
    LeetCode Unique Binary Search Trees II
    Binary Tree Zigzag Level Order Traversal
    JavaWeb--JSP
    Java--面向对象
    javaScript-进阶篇(三)
    javaScript-进阶篇(二)
    java--常用类
    javaScript-进阶篇(一)
    Java--数组
  • 原文地址:https://www.cnblogs.com/chiweiming/p/10707450.html
Copyright © 2011-2022 走看看