码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 1521 排列组合

时间:2017-12-24 12:54:56      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:double   problem   ios   amp   模板   ane   pre   超出   eof   

Problem Description
 
有n种物品,并且知道每种物品的数量。要求从中选出m件物品的排列数。例如有两种物品A,B,并且数量都是1,从中选2件物品,则排列有"AB","BA"两种。
 
Input
每组输入数据有两行,第一行是二个数n,m(1<=m,n<=10),表示物品数,第二行有n个数,分别表示这n件物品的数量。
Output
对应每组数据输出排列数。(任何运算不会超出2^31的范围)
 
Sample Input
2 2 1 1
Sample Output
2
指数型母函数模板题
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<cmath>
 6 using namespace std;
 7 double a[12],b[12];
 8 long long fac[12];
 9 int d[12],n,m;
10 int main()
11 {int i,j,k;
12   while (cin>>n>>m)
13   {
14     memset(a,0,sizeof(a));
15     memset(b,0,sizeof(b));
16     for (i=1;i<=n;i++)
17      scanf("%d",&d[i]);
18     fac[0]=1;
19     for (i=1;i<=10;i++)
20       fac[i]=fac[i-1]*i;
21     a[0]=1;
22     for (i=1;i<=n;i++)
23       {
24     memset(b,0,sizeof(b));
25     for (j=0;j<=d[i];j++)
26       {
27         for (k=0;k<=m-j;k++)
28           b[k+j]+=a[k]/(double)fac[j];
29       }
30     memcpy(a,b,sizeof(b));
31       }
32     printf("%.0lf\n",a[m]*fac[m]);
33   }
34 }

 

HDU 1521 排列组合

标签:double   problem   ios   amp   模板   ane   pre   超出   eof   

原文地址:http://www.cnblogs.com/Y-E-T-I/p/8097630.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!