标签:不容易系列之4考新郎 算法 acm java

2 2 2 3 2
1 3
分析:这是一道递推、错排题。
1、错排思路和上一道题[hdu-2048] 神、上帝以及老天爷一样。
2、需要注意的是,这不是单纯的 m 个人错排,而是要从 n 个人中选取 m 个人错排。这也就是一个组合公式。
import java.util.Scanner;
public class Main {
static long[] factorial = new long[21];// 存储1—20的阶乘结果
static long[] errors = new long[21];// 存储m(1<m<=20)个人的错排数
static {
factorial[0] = factorial[1] = 1;
for (int i = 2; i < 21; i++) {
factorial[i] = factorial[i - 1] * i;
}
errors[1] = 0;
errors[2] = 1;
for (int i = 3; i < 21; i++) {
errors[i] = (i - 1) * (errors[i - 1] + errors[i - 2]);
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int c = scanner.nextInt();
while (c-- != 0) {
int n = scanner.nextInt();
int m = scanner.nextInt();
long cnm = factorial[n] / (factorial[n - m] * factorial[m]);
System.out.println(errors[m] * cnm);
}
}
}
[hdu-2049] 不容易系列之(4)——考新郎,布布扣,bubuko.com
标签:不容易系列之4考新郎 算法 acm java
原文地址:http://blog.csdn.net/u011506951/article/details/25386687