题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2049

一开始我的想法就是使用错排公式,先使用全排列从N对中选出M对,然后再使用错排对选出的M对进行错排计算,最后二者相乘。

emmm,代码写得很丑,只是提供一个思路,遇到类似的题目可以多一个思考方向。

D(n) = (n-1) [D(n-2) + D(n-1)]

特殊地,D(1) = 0, D(2) = 1.

详细推导过程百度一下你就知道。

 1 /*使用数学公式的思路比较简单,在N对中选择M对出来,也即是全排列的C(N,M),然后对这M对进行全错排,结果再将二者相乘;*/
 2 #include <iostream>
 3 using namespace std;
 4 int D(int n)         //全错排;
 5 {
 6     if(n==1)
 7         return 0;
 8     if(n==2)
 9         return 1;
10     else return
11         (n-1)*(D(n-1)+D(n-2));
12 }
13 int C(int n,int m)   //全排列
14 {
15     if(m==0)
16         return 1;
17     if(n==m)
18         return 1;
19     else return C(n-1,m)+C(n-1,m-1);
20 }
21 int main()
22 {
23     int i,n,m;
24     cin>>i;
25     int N,M;        //N是新人对数,M是找错的新郎数;
26
27     while(i--)
28     {
29     cin>>N>>M;
30     if(M==1)
31     {
32         cout<<1<<endl;
33         continue;
34     }
35     if(N<M)
36     {
37         cout<<"Wrong Input!"<<endl;
38         continue;
39     }
40     else
41     {
42     m=D(M);
43     n=C(N,M);
44     if(N==M)
45         cout<<m<<endl;
46     else
47         cout<<m*n<<endl;
48     }
49     }
50     return 0;
51 }

转载于:https://www.cnblogs.com/Guhongying/p/9070102.html

HDUOJ 不容易系列之(4)——考新郎相关推荐

  1. HDU2049 不容易系列之(4)——考新郎【递推】

    不容易系列之(4)--考新郎 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  2. HDU2049 不容易系列之(4)——考新郎

    国庆期间,省城HZ刚刚举行了一场盛大的集体婚礼,为了使婚礼进行的丰富一些,司仪临时想出了有一个有意思的节目,叫做"考新郎",具体的操作是这样的: 首先,给每位新娘打扮得几乎一模一样 ...

  3. 不容易系列之(4)——考新郎

    Problem Description 国庆期间,省城HZ刚刚举行了一场盛大的集体婚礼,为了使婚礼进行的丰富一些,司仪临时想出了有一个有意思的节目,叫做"考新郎",具体的操作是这样 ...

  4. HDOJ 2049 不容易系列之(4)——考新郎

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2049 Problem Description 国庆期间,省城HZ刚刚举行了一场盛大的集体婚礼,为了使婚 ...

  5. V - 不容易系列之(4)――考新郎(第二季水)

    Description 国庆期间,省城HZ刚刚举行了一场盛大的集体婚礼,为了使婚礼进行的丰富一些,司仪临时想出了有一个有意思的节目,叫做"考新郎",具体的操作是这样的:       ...

  6. HDU - 2049 不容易系列之(4)——考新郎(错排问题+组合数学)

    题目链接:点击查看 题目大意:有n对新婚夫妇,有m个新郎找错了新娘,问发生这种情况的可能 题目分析:匹配错误问题可以类比于全错排问题,这里插眼放一个讲的不错的博客: https://blog.csdn ...

  7. hdu 2049 不容易系列之(4)——考新郎 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2049 写这篇解题报告时 我真的很气愤 对自己又一次犯下低级错误改了两个小时 int型的数据居然用%I6 ...

  8. hdu 2049 不容易系列之(4)——考新郎

    在本博AC代码中,求CNM用的是Anm/amm没用阶乘的形式,两者皆可 #include <stdio.h> int main(void) {long long a,b,larr[21]; ...

  9. HDU 2049 不容易系列之(4)——考新郎( 错排 )

    链接:传送门 思路:错排水题,从N个人中选出M个人进行错排,即 C(n,m)*d[m] 补充:组合数C(n,m)能用double计算吗?第二部分有解释 Part 1. 分别求出来组合数的分子和分母然后 ...

最新文章

  1. Linux程序包管理(yum)
  2. linux nodejs环境部署,Linux 部署Nodejs 环境 (自学记录篇)
  3. JavaScript中的正则
  4. 22021年江苏高考成绩查询,江苏高考成绩查询系统入口
  5. 无损1080i到1080p是如何制作的
  6. 计算一个文件下的所有视频总时长
  7. python 圆周率_圆周率 python
  8. python 中英文 分离_利用Python将文本中的中英文分离方法
  9. 20145322何志威《网络对抗》逆向及Bof基础
  10. 【转】“弱水三千 只取一瓢”(出处就不去考证了)
  11. 报错:WebMvcConfigurer.class cannot be opened because it does not exist
  12. 《数据库系统概论》学习总结
  13. 大数据相关概念-什么是算子
  14. 浮点数floats的的整数除法和运算结果不精确
  15. Java虚拟机如何设置环境变量_如果classpath环境变量没有进行设置,Java虚拟机会自动将其设置为“.”,也就是当前目录。...
  16. 快速入门 Remix IDE
  17. anaconda 创建虚拟环境、激活及使用的基本方法
  18. 【Axure教程】中继器表格寻找和标记数据
  19. openwrt实现挂载usb摄像头及视频保存
  20. 深度学习Pytorch/Caffe-GPU环境配置

热门文章

  1. js 正则表达式奇偶字符串替换_js正则表达式replace替换变量方法
  2. python import pandas报错找不到_扎心!“我学了半年 Python,还是找不到工作”
  3. idea允许多实例运行
  4. 将List集合用字符串,逗号隔开进行拼接 ,五种方法
  5. Linux查看端口被那个进程占用
  6. MySQL对浮点数设置保留位数
  7. Android开发笔记(一百七十五)利用Room简化数据库操作
  8. Android开发笔记(一百二十三)下拉刷新布局SwipeRefreshLayout
  9. 离别海润光伏:杨怀进的“轮回怪圈”
  10. Node.js使用supervisor遭遇‘supervisor’不是内部或外部命令,如果解决?