• HDU 1465 不容易系列之一(错排,递归)


    简而言之,就是把n个信封全部装错的可能数。(中问题,具体看题目)

    //当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数用M(n)表示,
    //那么M(n-1)就表示n-1个编号元素放在n-1个编号位置,各不对应的方法数,其它类推.
    //第一步,把第n个元素放在一个位置,比如位置k,一共有n-1种方法;
    //第二步,放编号为k的元素,这时有两种情况⑴把它放到位置n,那么,对于剩下的n-1个元素,
    //由于第k个元素放到了位置n,剩下n-2个元素就有M(n-2)种方法;
    //⑵第k个元素不把它放到位置n,这时,对于这n-1个元素,有M(n-1)种方法;
    //综上得到
    //M(n)=(n-1)[M(n-2)+M(n-1)]
    //特殊地,M⑴=0,M⑵=1
    #include<stdio.h>
    #include<string.h>
    
    __int64 cuopai(int n)
    {
        if(n==1)
            return 0;
        if(n==2)
            return 1;
        return (n-1)*(cuopai(n-1)+cuopai(n-2));
    }
    
    int main()
    {
        int n;
        while(scanf("%d",&n)!=EOF)
            printf("%I64d
    ",cuopai(n));
        return 0;
    }
    View Code
    一道又一道,好高兴!
  • 相关阅读:
    浅谈prufer编码
    数据结构训练之三
    博弈论训练之一
    动态规划训练之十三
    杂题训练之七
    奇技淫巧训练之八
    浅谈博弈论
    浅谈卡特兰数
    奇技淫巧训练之七
    浅谈概率期望的一些例题
  • 原文地址:https://www.cnblogs.com/laiba2004/p/3235934.html
Copyright © 2020-2023  润新知