62,046
社区成员
发帖
与我相关
我的任务
分享
int[] N = new int[] { 1, 5, 12, 54, 14, 11, 13, 123, 22 };
var results = new List<List<int>>();
results.AddRange(FullCombination(N.ToList()));
results = results.Where(w => w.Sum()==17).ToList();
public static List<List<T>> FullCombination<T>(List<T> lstSource)
{
var n = lstSource.Count;
var max = 1 << n;
var lstResult = new List<List<T>>();
for (var i = 0; i < max; i++)
{
var lstTemp = new List<T>();
for (var j = 0; j < n; j++)
{
if ((i >> j & 1) > 0)
{
lstTemp.Add(lstSource[j]);
}
}
lstResult.Add(lstTemp);
}
lstResult.RemoveAt(0);
return lstResult;
}
var ar=new int[5]{1,2,3,4,5};
list<int[]> arr=组合方法(ar);
var q = arr.Select(d => new { sum = d.Sum(), item = d }).Where(d => d.sum == 17);
就行了.
至于"组合方法" 你自己随便百度就行了...