DFS,回溯实现全排列

package com.cjh.dfs;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class DFS1 {
	static List> list = new ArrayList<>();
	public static void main(String[] args) {
		int n = 3;
		int[] v = new int[n+1];//标记数组
		ArrayList 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 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);
		}
	}
}

你可能感兴趣的:(算法,Java,java,算法)