典型的错排问题
题解:计算所有人错排的种类数/阶乘
错排种类数:
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;}}
}