版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sword_anyone/article/details/89071052
算法是这样的,如果给定N个不同字符,将这N个字符全排列,最终的结果将会是N!种。如:给定 A、B、C三个不同的字符,则结果为:ABC、ACB、BAC、BCA、CAB、CBA一共3!=3*2=6种情况
package exe1_5;
import java.util.Scanner;
public class Exe1 {
static int count=0;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String string = scanner.nextLine();
String[] strspl = string.split(" ");
dfs(strspl,0);
System.out.println(count);
}
private static void dfs(String[] strspl, int begin) {
if (begin>=strspl.length) {
show(strspl);
count++;
return ;
}
for (int i = begin; i < strspl.length; i++) {
swap(strspl,i,begin);
dfs(strspl, begin+1);
swap(strspl, i, begin);
}
}
private static void show(String[] strspl) {
for(String s:strspl)
System.out.print(s+"\t");
System.out.println();
}
private static void swap(String[] strspl, int i, int begin) {
String temp = strspl[i];
strspl[i] = strspl[begin];
strspl[begin] = temp;
}
}
支付宝扫红包,让我能够买杯咖啡,继续创作,谢谢大家!