如何使得1,2,4,5,6这个数组排出所有可能的排列方式

来源:百度知道 编辑:UC知道 时间:2024/06/18 08:09:59
如何使得1,2,4,5,6这个数组排出所有可能的排列方式
此题是一道面试题
如果用硬嵌套也不是一个容易的事

我想的是一个笨方法
就是用随机数
Random m =new Random();
用m.Next(1,7).填充一个ArrayList,让ArrayList里面是1-6等六个数
然后判断这个ArrayList是否与已经填充完的ArrayList相等,如果不等就再填充一遍,直到所有不同的ArrayList都填充出来了,就是所有的排列了

这是用递归的实现,编译通过
class Program
{

static void permlist(int[] listdata, int k, int m)
{

if (k == m)

{
for (int i = 0; i <= m; i++) System.Console.Write(listdata[i]);
Console.WriteLine();
}
else
for (int i = k; i <= m; i++)
{
Swap(ref listdata[k],ref listdata[i]);
permlist(listdata, k + 1, m);
Swap(ref listdata[k],ref listdata[i]);
}
}