我把这段代码复制、粘贴和编辑到我的程序中.但不,我遇到的问题是,我只想拥有最多10个成员的组合,所以:
1
1-2
1-2-3
1-2-3-4
。
。
。
1-2-3-4-5-6-7-8-9-10
即使我有20张卡在我的名单上。但通过我并不是真正深入编码,所以我不知道如何改变它。我唯一的想法是检查每一个结果,如果它有超过10个数组,如果是,踢出它,但我认为这不是一个非常有效的方法。因此,我想知道你们是否知道一个好的解决方案,并能给我一些提示:)
欢迎马文(对不起,如果我的英语不完全正确.我是德国人,即使在我的母语中写作也不是我最强的技能。
public IEnumerable<IEnumerable<T>> GetPowerSet<T>(List<T> list)
{
return from m in Enumerable.Range(0, 1 << list.Count)
select
from i in Enumerable.Range(0, list.Count)
where (m & (1 << i)) != 0
select list[i];
}
public void PowerSetofcards()
{
var result = GetPowerSet(cards);
result.ToString().ToArray().ToArray();
}发布于 2014-10-21 09:56:52
您可以确保只通过前10张卡:
public void PowerSetofcards()
{
var result = GetPowerSet<string>(cards.Count() > 10 ? cards.Take(10).ToList() : cards);
result.ToString().ToArray();
}https://stackoverflow.com/questions/26483784
复制相似问题