问题详细地址:http://bbs.csdn.net/topics/390523434
那边板块人气差一点,发这里来晒一晒。

解决方案 »

  1.   

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                string[] en = { "A", "B", "C" };
                string[] num = { "1", "2", "3" };
                var result = Arrange(en).SelectMany(x => Arrange(num).Select(y => new { x, y }))
                    .Select(x => string.Join(" ", x.x.Zip(x.y, (a, b) => a + b).ToArray()));
                foreach (string item in result)
                {
                    Console.WriteLine(item);
                }
            }        static IEnumerable<IEnumerable<T>> Arrange<T>(IEnumerable<T> data) where T : IComparable
            {
                var query = data.Select(x => new List<T>() { x });
                for (int i = 0; i < data.Count() - 1; i++ )
                {
                    query = query.SelectMany(x => data.Where(y => !x.Contains(y)).Select(y => x.Concat(new List<T>() { y }).ToList()));
                }
                return query;
            }
        }
    }A1 B2 C3
    A1 B3 C2
    A2 B1 C3
    A2 B3 C1
    A3 B1 C2
    A3 B2 C1
    A1 C2 B3
    A1 C3 B2
    A2 C1 B3
    A2 C3 B1
    A3 C1 B2
    A3 C2 B1
    B1 A2 C3
    B1 A3 C2
    B2 A1 C3
    B2 A3 C1
    B3 A1 C2
    B3 A2 C1
    B1 C2 A3
    B1 C3 A2
    B2 C1 A3
    B2 C3 A1
    B3 C1 A2
    B3 C2 A1
    C1 A2 B3
    C1 A3 B2
    C2 A1 B3
    C2 A3 B1
    C3 A1 B2
    C3 A2 B1
    C1 B2 A3
    C1 B3 A2
    C2 B1 A3
    C2 B3 A1
    C3 B1 A2
    C3 B2 A1
    Press any key to continue . . .
      

  2.   

    版主老是喜欢LINQ,数据量大了会出问题的;