HDOJ1521
来源:互联网 发布:2016淘宝怎么开店步骤 编辑:程序博客网 时间:2024/06/16 20:41
排列组合
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2224 Accepted Submission(s): 917
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 21 1
Sample Output
2
(通过我的实验证明:数据水到爆了!!!)
#include<cstdio>#include<cstring>int a[11];double w[8],t[8];inline int p(int x){ int tot=1; for(int i=1;i<=x;i++)tot*=i; return tot;}int main(){ int n,m; while(scanf("%d%d",&n,&m)!=EOF) { for(int i=1;i<=n;i++)scanf("%d",&a[i]); memset(w,0,sizeof(w)); for(int i=0;i<=a[1];i++)w[i]=1.0/p(i); for(int i=2;i<=n;i++) { memcpy(t,w,sizeof(w)); for(int j=0;j<=m;j++) for(int k=1;k<=a[i];k++) if((j+k)<=m)w[j+k]+=t[j]*1.0/p(k); else break; } printf("%d\n",(int)(p(m)*w[m]+0.5)); } return 0;}
0 0
- HDOJ1521
- 连锁便利店线上线下双向合璧
- OpenStack源码中的with分析
- uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 - 大总结,看完全明白了
- 感觉有点烦躁
- zoj 3789 并查集
- HDOJ1521
- 【Leetcode】寻找数串中连续最大整数和且最大长度的子串
- 史上最短小精悍的javascript编写的俄罗斯方块游戏,仅仅60行代码 点赞
- Struts2常量详解
- POJ 1679 判断最小树是否唯一
- If We Were a Child Again - UVa 10494 高精度
- C# Winform 文件编码批量转换工具
- Java 引用 WeakReference
- 电子商务_电子商务专业研究平台—艾瑞网