您的位置:首页 > 其它

深度优先搜索(Depth First Search)

2017-12-26 00:00 453 查看

深度优先搜索(Depth First Search)

public class Test {

public static void main(String[] args) {
Test t = new Test();
t.depthFirstSeacrh(0);
}
int n = 5;
int[] a = new int
;
int[] book = new int
;
public void depthFirstSeacrh(int step) {

int i = 0;
if (step == n) {
out(a);
return;
}
for (i = 0; i < n; i++) {

if (book[i] == 0) {
a[step] = i+1;
book[i] = 1;
depthFirstSeacrh(step + 1);
book[i] = 0;
}
}
}

public void out(int[] a) {

for (int i : a) {
System.out.print(i + " ");
}
System.out.println();
}
}

代码解析

* 模型 全排列1,2,3
* 设置盒子 a数组 1,2,3
* 手上持有数据 1,2,3 3张卡片
* 设置标记状态 book[i] 第i张卡片是否被放置在盒子中
* 如 book[1]=1 表示 1号卡片,已经放置在盒子中了
* step 表示,执行步骤.每一次排列,step 最大为3
* 经过多轮排列,在第1步操作中,向1号盒子放置3号卡片
* a[step] = i; 如 a[2] = 1,
* 表示 在某次排列中,在第2步操作,向2号盒子放置1号卡片
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: