错排公式的学习
所谓错排,将一定数量的个体从它原来的位置换到一个非它原位置的方法总数。
错排可以利用递推来做,错排据了解也是可以直接利用组合数公式来做的,但是当
错排个体的数目巨大时,数据会非常的大。
因此即使利用递推,数组来存的方法做,仍要定义为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;
}

浙公网安备 33010602011771号