题目大意:

             求n个人的错排数量。

解题思路:

             错排公式:f[i] = (i-1)*(f[i-1] + f[i-2]);

代码:

#include<iostream>
using namespace std;
int main(void)
{
    __int64 f[21];
    f[1] = 0;
    f[2] = 1;
    for(int i = 3; i < 21; i++)
        f[i] = (i - 1) * (f[i-1] + f[i-2]);

    int n;
    while(scanf("%d", &n) == 1)
    {
        cout << f[n] << endl;
    }
    return 0;
}

posted on 2012-08-03 02:10  cchun  阅读(98)  评论(0编辑  收藏  举报