CSES 1192 - Counting rooms 解題心得( 題目 )

解題概念:DFS

解題方法:我們走訪每個格子,如果這格沒被走過就room+1,並且把它塗黑(變成不是空的),接著往四周走dfs,把屬於這個房間範圍的都塗黑。

Java參考程式碼(有更好意見可留言於下方,謝謝!)

import java.io.*;

import java.util.*;

public class cses1192 {

    public static BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
 
    public static int r,ret,n,m;
 
    public static boolean[][] mp=new boolean[1005][1005];
 
    public static boolean oor;
 
    public static void main(String[] args) throws Exception {
 
       String a=br.readLine();
 
       String[] r=a.split(" ");
 
       n=Integer.parseInt(r[0]);
 
       m=Integer.parseInt(r[1]);
 
       int cnt=0;
 
       for(int i=1;i<=n;i++) {
 
           a=br.readLine();
 
           for(int j=1;j<=m;j++) {
 
               if(a.charAt(j-1)=='.')mp[i][j]=true;
 
           }
 
       }
 
       for(int i=1;i<=n;i++) {
 
           for(int j=1;j<=m;j++) {
 
               if(mp[i][j]) {
 
                   dfs(i,j);
 
                   cnt++;
 
               }
 
           }
 
       }
 
       System.out.println(cnt);
 
   }
 
   
 
   public static void dfs(int x,int y) {
 
       if(!mp[x][y])return;
 
       mp[x][y]=false;
 
       dfs(x-1,y);
 
       dfs(x+1,y);
 
       dfs(x,y-1);
 
       dfs(x,y+1);
 
   }

}
 

 

 

文章標籤
全站熱搜
創作者介紹
創作者 En Chi Tsung 的頭像
En Chi Tsung

阿祁的部落格

En Chi Tsung 發表在 痞客邦 留言(0) 人氣(31)