2
因此,圣诞节即将到来,我的家人每年都会从帽子上取名,以便谁应该为谁买礼物,并且总是存在顾虑,主要是配偶为彼此购买礼物。所有可能的收藏品列表
假设家庭都像这样:
List<List<string>> families = new List<List<string>>()
{
new List<string>() { "A1", "A2" },
new List<string>() { "B1", "B2" },
new List<string>() { "C1", "C2" },
new List<string>() { "D1", "D2" }
};
家庭一个让人无法购买别人在他们的家庭,同样适合家庭B,C,D
,我们就可以轻松搞定从给定的人有家人:
:public static IEnumerable<string> FamilyOf(this List<List<string>> families, string person)
{
return families.Where(family => family.Contains(person)).First();
}
...我们可以得到所有有效的对
我怎样才能把它变成包含每个人的有效送达者/接收者的可能集合?从那我就选择一个随机集合。
我会考虑模拟这种作为图形问题。人是有向图中的节点。箭头是“可以购买”的关系。为所有节点构造k-完全图,然后删除代表“非法”对的边。现在,为图中的每个节点选择一个出站箭头;当你这样做时,消除原始节点中的所有其他出站箭头以及所选节点中的所有入站箭头。没有人指向或指向没有人的节点的配置是非法的;拒绝它。 – 2014-09-03 06:22:34