日期:2014-05-18 浏览次数:21018 次
using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
排列组合("ABC", 0, 3).ToList().ForEach(x => { Console.WriteLine(x); });
Console.ReadKey();
}
private static IEnumerable<string> 排列组合(string source, int fr, int len)
{
if (len == 1)
return new List<string> { source.Substring(fr, 1) };
else
return from sub in 排列组合(source, fr + 1, len - 1)
from i in Enumerable.Range(0, sub.Length + 1)
let first = source.Substring(fr, 1)
select sub.Insert(i, first);
}
}
}
------解决方案--------------------
这个问题有人问过类似的好像