package com.cjh.dfs;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class DFS1 {
static List<List<Integer>> list = new ArrayList<>();
public static void main(String[] args) {
int n = 3;
int[] v = new int[n+1];//标记数组
ArrayList<Integer> t = new ArrayList<>();//存储的排列
dfs(n,v,t);
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < list.get(i).size(); j++) {
System.out.print(list.get(i).get(j));
}
System.out.println();
}
}
public static void dfs(int n, int[] v, List<Integer> t) {
if (t.size() == n) {
list.add(new ArrayList<>(t));
return;
}
for (int i = 1; i <= n; i++) {
if (v[i] == 1) {
//如果这个数已经被使用了,直接进入下一循环
continue;
}
t.add(i);
v[i]=1;
dfs(n, v, t);
v[i]=0;
t.remove(t.size() - 1);
}
}
}
DFS,回溯实现全排列
最新推荐文章于 2026-01-08 17:10:56 发布

808

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



