import java.util.Scanner;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
///BFS模板
public class Main {
public static void judge(int[][]num,ArrayList<Node>node,int m,int n){
int[][] direct = {{-1,0},{1,0},{0,-1},{0,1}};//四个方向
Queue<Node>queue = new LinkedList<Node>();
for (int i = 0;i < node.size();i++) {
queue.offer(node.get(i));//这里使用了列表代表多个起点入口,从这个地方开始
}
while (queue.size()>0) {
Node temp = queue.poll();//出队,对出队元素作为起点开始搜索
for (int i = 0;i < 4;i++) {
int trow = temp.row+direct[i][0];//
int tcolumn = temp.column+direct[i][1];
if (trow<0||tcolumn<0||trow>num.length-1||tcolumn>num[i].length-1)
continue;//不满足的条件
if (num[trow][tcolumn] == 1)continue;//同上
Node next = new Node (trow,tcolumn);
num[trow][tcolumn] = 1;
//node.add(new Node(trow,tcolumn));相当于存储本次结束的新起点,若存在次数限制的BFS此可用
//queue.offer(next);//一次遍历到底
}
}
int i,k;//打印结果
for (i = 0;i<num.length;i++) {
for (k = 0;k<num[i].length;k++) {
System.out.print(num[i][k]);
}
System.out.println();
}
}
}
class Node{
int row;
int column;
Node(int row,int column){
this.row = row;
this.column = column;
}
}
BFS广度优先搜素Java模板
最新推荐文章于 2023-05-15 03:37:35 发布