日期:2014-05-18 浏览次数:21027 次
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);
        }
    }
}
------解决方案--------------------
这个问题有人问过类似的好像