我有点复制粘贴并将此代码编辑到我的程序中以满足我的需求...但是我没有得到问题,我只想要最多10个成员的组合所以:
1
1-2
1-2-3
1-2-3-4
。
。
。
1-2-3-4-5-6-7-8-9-10
即使我的名单中有20张卡片。但通过我不是很深入编码所以我不知道如何改变它。 我唯一的想法是检查每个结果,如果它有超过10个阵列,如果是踢它,但我不认为这是一个非常有效的方式。所以我想知道你们是否知道一个好的解决方案并且可以给我一些提示:)
迎接马文 (对不起,如果我的英语不完全正确...我是德国人,即使我的母语写作也不是我最强的技能:D)
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();
}
答案 0 :(得分:0)
你可以确保你只传递前10张牌:
public void PowerSetofcards()
{
var result = GetPowerSet<string>(cards.Count() > 10 ? cards.Take(10).ToList() : cards);
result.ToString().ToArray();
}