算法竞赛入门第6章DFS算法解八连块问题java版

题目:找出n*n矩阵中的连块(1表示黑色,0表示白色)。如果两个黑格子有公共边或者公共顶点则属于同一个八连快

代码:package diliuzhang;import java.util.Scanner;public class BaLianKuanDFS {staticint[][] visit=new int[50][50];staticint[][] mat=new int[50][50];public static void main(String[] agrs){Scanner in=new Scanner(System.in);int n=in.nextInt();for (int i = 0; i <n; i++) {for (int j = 0; j <n; j++) {mat[i+1][j+1]=in.nextInt();}}int count=0;for (int i = 1; i <=n; i++) {for (int j = 1; j <=n; j++) {if (visit[i][j]==0&&mat[i][j]!=0) {count++;dfs(i,j);}}}System.out.println(count);}private static void dfs(int i, int j) {// TODO Auto-generated method stubif (mat[i][j]==0||visit[i][j]!=0) {return;}visit[i][j]=1;dfs(i-1, j-1);dfs(i-1, j);dfs(i-1, j+1);dfs( i-1, j);dfs(i, j+1);dfs(i+1, j-1);dfs(i+1, j);dfs(i+1, j+1);}}

只要你扬帆,便会有八面来风。启程了,人的生命才真正开始。

算法竞赛入门第6章DFS算法解八连块问题java版

相关文章:

你感兴趣的文章:

标签云: