首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

一道ACM的排列组合有关问题

2012-03-12 
求助一道ACM的排列组合问题Problem Description有n种物品,并且知道每种物品的数量。要求从中选出m件物品的

求助一道ACM的排列组合问题
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


[解决办法]
直接动态规划不就得了.
a[i][j] 表示0---i 中使用j个排序的种数..
然后可以通过a[i-1][k] 来求a[i][j]...因为不管前面是否有重复的..
a[i-1][k] 中所有元素对于i中元素都是不同的..就变成了简单的问题...
思路就是这样。自己去想吧
[解决办法]
没仔细想,如果A和B大于M,大概是这样,不知对错噢......
(A! / (A - M)!) * (B! / (B - M)!) * M!
如果A的数量和B的数量有小于M的,就不一样了。
[解决办法]
位运算。
C(n,m)=∑(1<<i)
时间空间都节省。

热点排行