zoukankan      html  css  js  c++  java
  • hdu 4535(排列组合之错排公式)

    吉哥系列故事——礼尚往来

    Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
    Total Submission(s): 1417    Accepted Submission(s): 733


    Problem Description
      吉哥还是那个吉哥
      那个江湖人称“叽叽哥”的基哥
      
      每当节日来临,女友众多的叽叽哥总是能从全国各地的女友那里收到各种礼物。
      有礼物收到当然值得高兴,但回礼确是件麻烦的事!
      无论多麻烦,总不好意思收礼而不回礼,那也不是叽叽哥的风格。
      
      现在,即爱面子又抠门的叽叽哥想出了一个绝妙的好办法:他准备将各个女友送来的礼物合理分配,再回送不同女友,这样就不用再花钱买礼物了!
      
      假设叽叽哥的n个女友每人送他一个礼物(每个人送的礼物都不相同),现在他需要合理安排,再回送每个女友一份礼物,重点是,回送的礼物不能是这个女友之前送他的那个礼物,不然,叽叽哥可就摊上事了,摊上大事了......
      
      现在,叽叽哥想知道总共有多少种满足条件的回送礼物方案呢?
     
    Input
    输入数据第一行是个正整数T,表示总共有T组测试数据(T <= 100);
    每组数据包含一个正整数n,表示叽叽哥的女友个数为n( 1 <= n <= 100 )。
     
    Output
    请输出可能的方案数,因为方案数可能比较大,请将结果对10^9 + 7 取模后再输出。
    每组输出占一行。
     
    Sample Input
    3 1 2 4
     
    Sample Output
    0 1 9
     
    错排:考虑一个有 n 个元素的排列,若一个排列中所有的元素都不在自己原来的位置上,那么这样的排列就称为原排列的一个错排。
    当 n 个编号元素放在 n个编号位置,元素编号与位置编号各不对应的方法数用 D(n)表示,那么D(n-1)就表示 n-1 个编号元素放在 n-1 个编号位置,各不对应的方法数,其它类推.
    第一步,把第 n 个元素放在一个位置,比如位置 k,一共有 n-1 种方法;
    第二步,放编号为 k 的元素,这时有两种情况:
    ⑴把它放到位置 n,那么,对于剩下的n-1 个元素,由于第 k 个元素放到了位置 n,剩下 n-2 个元素就有 D(n-2)种方法;
    ⑵第 k 个元素不把它放到位置 n,这时,对于这 n-1 个元素,有 D(n-1)种方法;
    所以得到错排公式:f[i] = (i-1)*(f[i-1]+f[i-2])
    #include<stdio.h>
    #include<string.h>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    typedef long long LL;
    const LL mod = 1000000007;
    LL f[105];
    int main()
    {
        f[1] =0,f[2]=1;
        for(int i=3;i<=100;i++){
            f[i] = (f[i-1]+f[i-2])%mod*(i-1)%mod;
        }
        int tcase;
        scanf("%d",&tcase);
        while(tcase--){
            int n;
            scanf("%d",&n);
            printf("%lld
    ",f[n]);
        }
        return 0;
    }
  • 相关阅读:
    成功并不是要得到什么,而是要放弃什么
    Qt一步一步实现插件通信(附源码)
    Qt一步一步实现插件调用(附源码)
    推荐大家阅读——《你的知识需要管理》
    移动商机十人谈__移动红利
    如果再不要求进步,那么你就是下一个陨落的巨头
    贫穷的本质__如何改变穷人的现状?
    贫穷的本质__缺乏对未来的信心和长远规划
    痛苦并愉快的被洗着_品牌洗脑
    Qt_Pro详解
  • 原文地址:https://www.cnblogs.com/liyinggang/p/5620608.html
Copyright © 2011-2022 走看看