公告

👇 微信 👇

图片

欢迎私信交流

Skip to content

1-DFS ​

算法思想 ​

记忆口诀 ​

  1. 事前,上锁
  2. 事中,更新
  3. 事后,解锁

算法模板 ​

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;
            }
        }
    }
}