前言
这几天研究不相交集合类,小有所得,就设计一个小迷宫作为记录了,设计思路就是 随机选择两个相邻的区域,如果不是等价关系就把它们之间的墙拆掉,直到第一个元素和最后一个元素是等价的。
代码
top left 等分别代表墙体,0初始代表没有,1 代表有墙,row 是所在的行数
public class Demo {
int top;
int bottom;
int left;
int right;
int parent = -1;
int value;
int row;
}
create 方法最后产出迷宫
原谅我前端不好,只能用 div 来做了
package com.example.demo.util;
import java.io.FileNotFoundException;
import java.util.Random;
public class CollectS {
private Demo [] S=null;
private int n=0;
// 构造初始的,先默认都加上下和右墙
public CollectS(int n) {
this.n=n;
init(n);
}
/**
* 初始化 值,让每个数值区域有 底部和右边的 墙壁,赋值为1,第一行的特殊有 顶部墙壁,第一列有 左边墙壁
* @param n
*/
public void init(int n){
S = new Demo[n*n];
for (int i