例如对已有的4个数字例如(1,2,3,4)做全排列并赋值给a1,a2,a3,a4?
对每个a1,a2,a3,a4的情况都要做一些操作的,就是想不明白怎么用循环之类的得出那4个变量的24种不同的情况
是这个意思么?
int[] array = {1, 2, 3, 4};
int iCount = 0;
for (int i1 = 0; i1 < 4; i1++)
{
for (int i2 = 0; i2 < 4; i2++)
{
if (i2 == i1)
{
continue;
}
for (int i3 = 0; i3 < 4; i3++)
{
if (i3 == i1 || i3 == i2)
{
continue;
}
for (int i4 = 0; i4 < 4; i4++)
{
if (i4 == i1 || i4 == i2 || i4 == i3)
{
continue;
}
iCount++;
Console.WriteLine("{0}-{1}-{2}-{3}", i1, i2, i3, i4);
}
}
}
}
Console.WriteLine("AllCount == {0}", iCount);
Console.ReadKey();
int[] array = {1, 2, 3, 4};
int a1, a2, a3, a4;
int iCount = 0;
for (int i1 = 0; i1 < array.Length; i1++)
{
for (int i2 = 0; i2 < array.Length; i2++)
{
if (i2 == i1)
{
continue;
}
for (int i3 = 0; i3 < array.Length; i3++)
{
if (i3 == i1 || i3 == i2)
{
continue;
}
for (int i4 = 0; i4 < array.Length; i4++)
{
if (i4 == i1 || i4 == i2 || i4 == i3)
{
continue;
}
a1 = array[i1];
a2 = array[i2];
a3 = array[i3];
a4 = array[i4];
iCount++;
Console.WriteLine("{0}-{1}-{2}-{3}", a1, a2, a3, a4);
}
}
}
}
Console.WriteLine("AllCount == {0}", iCount);
Console.ReadKey();
}
你去百度一下全排列算法,直接用一下内部实现赋值不就行了。你的问题在算法是吧
http://www.cnblogs.com/nokiaguy/archive/2008/05/11/1191914.html比较高效的递归算法
也可以利用数组排列的方式来进行吧,没变动一次就记录组合,去掉相同排列就行,不过比较麻烦