首页 > 代码库 > 组合 z
组合 z
输入a b c d e以及它们对应的数字
比如
a-->1 2 3
b-->2 3
c-->1
d-->3 4 5
e-->1 3 5
输出a b c d e的可用组合,a b c d e不重复,如
a-->2
b-->3
c-->1
d-->4
e-->5
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks; namespace ConsoleApplication1{ class Program { static void Main(string[] args) { var dict = new Dictionary<char, List<int>>() { { ‘a‘, new List<int> { 1, 2, 3 } }, { ‘b‘, new List<int> { 2, 3 } }, { ‘c‘, new List<int> { 1 } }, { ‘d‘, new List<int> { 3, 4, 5 } }, { ‘e‘, new List<int> { 1, 3, 5 } } }; foo(dict, new Dictionary<char, int>()); } static void foo(Dictionary<char, List<int>> data, Dictionary<char, int> pre) { if (data.Count == 0) { Console.WriteLine("found:"); foreach (var item in pre.OrderBy(x => x.Key)) Console.WriteLine("{0} - {1}", item.Key, item.Value); return; } var first = data.OrderBy(x => x.Value.Count()).First(); foreach (var item in first.Value) { foo(data.OrderBy(x => x.Value.Count()).Skip(1).ToDictionary(x => x.Key, x => x.Value.Except(new int[] { item }).ToList()), pre.Cast<KeyValuePair<char, int>>().Concat(new KeyValuePair<char, int>[] { new KeyValuePair<char, int>(first.Key, item) }).ToDictionary(x => x.Key, x => x.Value)); } } }}
组合 z
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。