【发布时间】:2012-07-18 05:43:40
【问题描述】:
我希望从 r 个大小为 n 的元素生成一个幂多集。
说函数是
public List<List<string>> PowerMultiSet (List<string> elems, int n )
示例 输入:{"d1","d2",d3"}, n=2 输出:{"d1","d1"}, {"d1","d2"},{"d1","d3"},{"d2","d2"}, {"d2","d3" },{"d3","d3"} 假设elems的大小为r,生成的元素个数为C(n+r-1,r-1)。
我想知道如何在没有冗余操作的情况下实现这一点(即理想情况下,数字操作应该是 = C(r+n-1,n-1))
非常感谢!
【问题讨论】:
-
我不确定我是否理解正确:
List< List < string > >不是您想要的吗?你没有得到 n!/(n-k)!乘以 k 个条目? -
你的函数原型是C#的,你想要C#还是C++的解决方案?选一个!
-
C# 和 C++ 对我来说都可以,更喜欢 c#。是的,这是 List > 抱歉
-
为什么是 n!/(n-k)!乘以 k 个条目?
-
这可以是将 n 个相同的球分配到 r 个不同的盒子中,这些盒子允许空盒子,因此它有 C(r+n-1,n-1)
标签: c# c++ algorithm math combinatorics