该程序就是求排列Ank
import java.util.Scanner;
public class 排列序列 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int K =sc.nextInt();
int[] a =new int[N];
for(int i = 0;i < N;i++) {
a[i] = i + 1;
}
pailie(a, N, K, 0);
System.out.println("输出ANK为多少种情况" + sumpailie(N, K));
}
public static int sumpailie(int N,int K) {
if(K == 1) {
return N;
}
return sumpailie(N - 1, K - 1) * N;
}
static int[] result = new int[10];
static boolean[] flag = new boolean[10];
public static void pailie(int[] a,int N,int K,int level) {
if(level >= K) {
for(int j = 0;j < level;j++) {
System.out.print(result[j] + " ");
}
System.out.println();
return;
}
for(int i = 0;i < N;i++) {
if(flag[i] == false) {
flag[i] = true;
result[level++] = a[i];
pailie(a, N, K, level);
level--;
flag[i] = false;
}
}
}
}
A53的结果如下:
1 2 3
1 2 4
1 2 5
1 3 2
1 3 4
1 3 5
1 4 2
1 4 3
1 4 5
1 5 2
1 5 3
1 5 4
2 1 3
2 1 4
2 1 5
2 3 1
2 3 4
2 3 5
2 4 1
2 4 3
2 4 5
2 5 1
2 5 3
2 5 4
3 1 2
3 1 4
3 1 5
3 2 1
3 2 4
3 2 5
3 4 1
3 4 2
3 4 5
3 5 1
3 5 2
3 5 4
4 1 2
4 1 3
4 1 5
4 2 1
4 2 3
4 2 5
4 3 1
4 3 2
4 3 5
4 5 1
4 5 2
4 5 3
5 1 2
5 1 3
5 1 4
5 2 1
5 2 3
5 2 4
5 3 1
5 3 2
5 3 4
5 4 1
5 4 2
5 4 3
输出A53为多少种情况60