错排公式的学习

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

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

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

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

}

 

你可能感兴趣的:(学习)