DFS_4:连通块数量
问题分析:
为什么DFS能求连通块的数量?这篇文章应该发表在01迷宫文章之前才对,因为01迷宫如果用DFS的话,那求的就是每个连通块里面的小块有多少个,其实说白了,01迷宫 就是利用了DFS+VIS染色记录的原理。目前这题求连通块的数量比较简单,因为他不用记录每个连通块里面的小块有多少个,只需要DFS就能完成。此外,回答一开头的问题,其实是因为DFS能一条路走到黑,也就是能遍历完所有点,所以才能求得连通块的数量。此外BFS也能求连通块的数量。
输入输出:
5 5
0 0 1 1 1
0 1 0 0 0
1 0 0 1 1
1 1 1 1 1
0 0 0 0 0
3
代码
易错:先标记再递归
import java.util.Scanner;
public class DFS_3 {
static int N = 20;
static int n,m ;
static int[][] map = new int[N][N];
static int[] xx = {0,0,-1,1};
static int[] yy = {-1,1,0,0};
static int ans = 0;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
n = scanner.nextInt();
m = scanner.nextInt();
//绘制map
for (int i = 1; i <= n; i++) {
for (int j = 1; j

本文介绍了如何使用DFS算法来计算连通块的数量。通过DFS能遍历所有点,从而确定连通块的个数,而不需要像01迷宫问题那样记录每个小块。同时提到,BFS也能用于求解连通块。文章提醒在实现时要注意先标记再进行递归。
最低0.47元/天 解锁文章
1350

被折叠的 条评论
为什么被折叠?



