/**
* 1 2 2 3 4 5
* 交换的方式
*/
public class Main
{
static int count = 0;
public static void main(String[] args)
{
char[]arr = {'1','2','2','3','4','5'};
dfs1(0,5,arr);
System.out.println(count);
}
public static void dfs1(int start, int end, char[]arr) {
if (start == end) {
count++;
System.out.println(String.valueOf(arr));
}else {
for (int i = start; i <= end; i++) {
swap(start, i, arr);
dfs1(start+1, end, arr);
swap(start, i, arr);
}
}
}
public static void swap(int a, int b, char[]arr) {
char temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
}
/**
* 1 2 2 3 4 5 dfs深搜
*/
public class Test
{
public static int count = 0;
public static boolean[]flag = {false,false,false,false,false,false};
public static char[]result;
public static void main(String[] args)
{
result = new char[6];
char[]arr = {'1','2','2','3','4','5'};
dfs2(0,"",arr);
System.out.println(count);
}
public static void dfs2(int index, String str, char[]arr) {
if (index == 6) {
System.out.println(String.valueOf(result));
count++;
}else {
for (int i = 0; i < arr.length; i++) {
if (flag[i] == false) {
flag[i] = true;
result[index] = arr[i];
dfs2(index+1, str+arr[i], arr);
flag[i] = false;
}
}
}
}
}