1
1.
字符排序
算法是这样的,如果给定N个不同字符,将这N个字符全排列,最终的结果将会是N!种。如:给定 A、B、C三个不
同的字符,则结果为:ABC、ACB、BAC 、BCA、CAB、CBA一共3!=3*2=6种情况。
package Question1_9;
import java.util.Scanner;
import java.util.Vector;
public class Question1 {
public static long count=0;
private void fullPermutation(Vector<Charac ter>sourse, Vector<Char acter> result) {
if(sourse.size()==0){
for (int i = 0; i < result.si ze(); i++) {
System.out.print(result.elementAt(i));
}
System.out.print("");
count+ +;
return;
}
for (int i = 0; i < sourse.size(); i++) {
Vector<Character>tsourse=new Vect or<Character>(sourse);
Vector<Character>tr esult=new Vector<Character>(result);
tresult.add(sourse.elementAt(i));
tsourse.remove(i);
new Question1().fullPermutation(tsourse, tresult);
}
}
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
Vector<Character> sourse=new Vector<Character>();
Vector<Character> result=new Vector<Character>();
for (int i = 0; i < n; i++) {
sourse.add((char)('A'+i));
}
new Question1().fullPermutation(sourse, res ult);
System.out.println(Question1.count);
}
}
方法二:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
评论0