package com.vic.string;
public class Permutation {
private static int count = 0;
static void permutation(char[] s,int start){
if(start==s.length){
System.out.println(new String(s).toString());
count++;
}
for(int i=start;i<s.length;i++){
//第一个字符和后面每一个分别交换
char temp = s[i];
s[i] = s[start];
s[start] = temp;
permutation(s,start+1);//向后递归
//换回来
s[start] = s[i];
s[i] = temp;
}
}
public static void main(String[] args) {
char[] s = "abc".toCharArray();
permutation(s, 0);
System.out.println("total:"+count);
}
}
//除去重复元素的全排列
public class ListAll {
private static int count =0;
public static void list(int[] a,int start,int end){
if (start==end) {
display(a);
count++;
return;
}else{
for (int i = start; i <= end; i++) {
if (isSwap(a,start,i)) {
int temp = a[start];
a[start] = a[i];
a[i] = temp;
list(a, start+1, end);
a[i] = a[start];
a[start] = temp;
}
}
}
}
private static boolean isSwap(int[] a, int start, int i) {
for (int j = start; j < i; j++) {
if (a[j] == a[i]) {
return false;
}
}
return true;
}
private static void display(int[] a) {
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+" ");
}
System.out.println();
}
public static void main(String[] args) {
int[] a = {1,1,2,3};
list(a, 0, a.length-1);
System.out.println(count);
}
}