110,539
社区成员
发帖
与我相关
我的任务
分享
var rnd = new Random();
var nums = Enumerable.Range(0, 10).OrderBy(x => rnd.Next()).Take(5).ToList();
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] };
}
}
}