P1596 [USACO10OCT]湖计数Lake Counting(dfs,洛谷,java)

洛谷链接:https://www.luogu.com.cn/problem/P1596

在这里插入图片描述
在这里插入图片描述

import java.util.Scanner;
public class Main {
	
	static int n=0,m=0,ans=0;
	static int[][] a=new int[1000][1000];
	static int[] dx={-1,1,0,0,-1,-1,1,1};
	static int[] dy={0,0,-1,1,-1,1,-1,1};
	
	public static void dfs(int x,int y) {
		a[x][y]=0;  //已经走过
		for(int i=0;i<8;i++) {
			int nx=x+dx[i];
			int ny=y+dy[i];
			
			if(a[nx][ny]==0 || nx<1 || nx>n || ny<1 || ny>m )  continue;  //返回走下一个方向
			dfs(nx,ny);  //走
		}
	}
	
	public static void main(String[] args) {	
		Scanner in=new Scanner(System.in);
        n=in.nextInt();
        m=in.nextInt();
        
        for(int i=1;i<=n;i++) {
        	String s=in.next();
        	for(int j=1;j<=m;j++) {
        		char c=s.charAt(j-1);
        		if(c=='W') {
        			a[i][j]=1;
        		}else {
        			a[i][j]=0;
        		}
        	}
        }
        
        for(int i=1;i<=n;i++) {
        	for(int j=1;j<=m;j++) {
        		if(a[i][j]==1) {
        			//如果该点是水
        			dfs(i,j);
        			ans++;
        		}
        	}
        }
        System.out.println(ans);
	}
}
发布了86 篇原创文章 · 获赞 46 · 访问量 1705

猜你喜欢

转载自blog.csdn.net/weixin_44685629/article/details/104264865
今日推荐