有十个数 0 1 2 3 4 5 6 7 8 9,从这十个数中任选5个数进行排列组合,不能出现重复的排列,用代码怎么写呢?

解决方案 »

  1.   

    using System;
    using System.Collections.Generic;
    using System.Linq;namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                var nums= Enumerable.Range(0,10).ToList();
                var cn = 0;
                foreach (var p in 排列(nums))
                {
                    Console.WriteLine("方案 {0}:", ++cn);
                    p.ForEach(x => Console.Write("{0} ", x));
                    Console.WriteLine();
                }
                Console.WriteLine("__________________________End!");            Console.ReadKey();
            }        public static IEnumerable<List<int>> 排列(List<int> nums)
            {
                return 排列(nums, nums.Count);
            }        public static IEnumerable<List<int>> 排列(List<int> nums, int count)
            {
                if (count > 1)
                {
                    foreach (var a in 排列(nums, count - 1))
                    {
                        var b = a.ToList();
                        for (var i = b.Count; i >= 0; i--)
                        {
                            b.Insert(i, nums[count - 1]);
                            yield return b;
                            b.RemoveAt(i);
                        }
                    }
                }
                else
                    yield return new List<int> { nums[0] };
            }    }}
      

  2.   

    任选5个那不过是    var rnd = new Random();
        var nums = Enumerable.Range(0, 10).OrderBy(x => rnd.Next()).Take(5).ToList();