文章标题

来源:互联网 发布:sql server数据库大小 编辑:程序博客网 时间:2024/06/02 05:18

一组数据{1,2,3,4,5,6,7,8,9,10,11,12} 里面若干个数相加等于15,列出所有可能,比如
1+2+12=15
1+3+11=15
1+2+3+4+5=15
7+8=15
2+3+10=15

更多 0

        void Run()        {            int[] collection = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };            foreach (var item in GetDistinctResult(collection, 15))            {                Console.WriteLine(string.Join(" + ", item));            }        }        IEnumerable<int[]> GetDistinctResult(int[] collection, int sum)        {            return GetResult(collection, sum).Distinct();        }        IEnumerable<int[]> GetResult(int[] collection, int sum)        {            for (int count = 1; count <= collection.Length; ++count)                foreach (var item in Fill(count, 0, collection, new int[count]))                    if (item.Sum() == sum)                        yield return item;        }        IEnumerable<int[]> Fill(int count, int start, int[] collection, int[] selection)        {            int num = count - 1;            int upper = collection.Length - num;            for (int i = start; i < upper; ++i)            {                selection[selection.Length - count] = collection[i];                if (num == 0)                    yield return (int[])selection.Clone();                else                    foreach (var item in Fill(num, i + 1, collection, selection))                        yield return item;            }        }
0 0
原创粉丝点击