哎,年纪大了连题都看不懂了
大神,能解决不哦。如果可以请加我qq 86682644
@shenz_free: 前提是你要能说清楚题目。。
@l3oz: 我有一个原始数据价格,有1,2,2,4,5,6,8,9比如这些数据都查询出来了。
当我需要一个12元的价格的时候。应该得到 9 1 2 或者 其他的结果。4,6,2等。反正等于12或者小于就可以了。
@shenz_free: 应该可以符合你的要求了。。
1 private static void Main(string[] args) 2 { 3 Test(new[] { 1, 2, 2, 4, 5, 6, 8, 9 }, 12); 4 5 Console.ReadKey(true); 6 } 7 8 private static void Test(IReadOnlyList<int> data, int price) 9 { 10 var queue = new Queue<List<int>>(); 11 12 for (var i = 0; i < data.Count; i++) 13 queue.Enqueue(new List<int> { i }); 14 15 while (queue.Count > 0) 16 { 17 var list = queue.Dequeue(); 18 var sum = list.Sum(index => data[index]); 19 20 if (sum <= price) 21 { 22 //match 23 Console.WriteLine(string.Join(",", list.Select(index => data[index]))); 24 } 25 26 if (sum >= price) 27 continue; 28 29 for (var i = list[list.Count - 1] + 1; i < data.Count; i++) 30 { 31 var newList = new List<int>(list) { i }; 32 33 queue.Enqueue(newList); 34 } 35 } 36 }
@l3oz: 先谢谢大神,我先试试。。不过我这里是.NET(2.0)用不了linq