试图解决问题时
一组九个元素中有多少七个元素子集(不可重复)?
我试过
IEnumerable<string> NineSet =new string[] {"a","b","c","d","e","f","g","h","i"};
var SevenSet =
from first in NineSet
from second in NineSet
where first.CompareTo(second)< 0 && first.Count() + second.Count()==7
select new { first, second };
阻止我尝试使用first.Count()
和second.Count()
的问题是什么?我没有检查它是否是解决问题的最佳方案。
答案 0 :(得分:3)
如前所述,你所记下的内容将导致你无处可去。这是组合学的问题。 AFAIK在.NET框架中没有任何预先设计来解决组合问题,因此您必须实现正确的算法。如果你遇到困难,那里有解决方案,例如http://www.codeproject.com/KB/recipes/Combinatorics.aspx,您可以在其中查看来源,了解您需要执行的操作。
答案 1 :(得分:1)
第一个和第二个是字符串,所以你要计算他们的字符(这个编译,但是智能隐藏它)。
您正在寻找类似NineSet.Count(first.Equals)
答案 2 :(得分:1)
嗯...
first
和second
是字符串,为什么不使用first.Length
和second.Length
?作为一个侧面问题,我不认为这种方法会为你解决问题,我担心......