典型的错排问题
题解:计算所有人错排的种类数/阶乘
错排种类数:
1——0
2——1
3——2 第一个人两种选择假设1拿了2的,那么2只能拿3,因为2如果拿1,3就会拿3就不会拿错
4——9 3×(1+2)
5——44
f(n)=(n-1)*[f(n-1)+f(n-2)]
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int n= scanner.nextInt();
for (int i=0;i<n;i++){
int num= scanner.nextInt();
System.out.println(String.format("%.2f",(Calculate(num)/Factorial(num))));
}
}
static double Calculate(int num){
if (num==1){
return 0;
} else if (num==2) {
return 1;
}else {
return (num-1)*(Calculate(num-1)+Calculate(num-2));
}
}
static int Factorial(int num){
if (num==1){
return 1;
}else {
return Factorial(num-1)*num;
}
}
}