1-DFS
算法思想
记忆口诀
- 事前,上锁
- 事中,更新
- 事后,解锁
算法模板
java
import java.util.*;
public class Main {
static int N = 10;
static int n;
// path[]下标从1开始
static int[] path = new int[N];
// st[i]存储元素 i 的使用情况,下标从1开始
static boolean[] st = new boolean[N];
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
n = in.nextInt();
dfs(0);
}
static void dfs(int u)
{
if(u == n)
{
for(int i = 1; i <= n; i ++ ) System.out.print(path[i] + " ");
System.out.println();
}
// 不结束条件
// 仍有节点未被使用
for(int i = 1; i <= n; i ++ )
{
if(!st[i])
{
st[i] = true;
path[u + 1] = i;
dfs(u + 1);
st[i] = false;
}
}
}
}
