错排公式的学习

    所谓错排,将一定数量的个体从它原来的位置换到一个非它原位置的方法总数。

错排可以利用递推来做,错排据了解也是可以直接利用组合数公式来做的,但是当

错排个体的数目巨大时,数据会非常的大。

   因此即使利用递推,数组来存的方法做,仍要定义为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;
}

 

posted @ 2014-08-09 19:32  我喜欢旅行  阅读(186)  评论(0编辑  收藏  举报