错排公式的学习
所谓错排,将一定数量的个体从它原来的位置换到一个非它原位置的方法总数。
错排可以利用递推来做,错排据了解也是可以直接利用组合数公式来做的,但是当
错排个体的数目巨大时,数据会非常的大。
因此即使利用递推,数组来存的方法做,仍要定义为long long 的数据类型,否
则数据会溢出。
// 考察错排 #include <stdio.h> #include <stdio.h> long long f[30]; int main() { f[2]=1; f[3]=2; int i, n; for(i=3; i<=20; i++) { f[i]=(i-1)*(f[i-2]+f[i-1] ); } while(scanf("%d", &n)!=EOF) { printf("%lld\n", f[n] ); } return 0; }