日期:2014-05-18  浏览次数:21027 次

求数组排列组合算法
数组
{A,B,C,D}
{a,b,c,d}

求数组的所有排列,得到的结果应该是:
{a,B,C,D}
{A,b,C,D}
{A,B,c,D}
{A,B,C,d}
{a,b,C,D}
{a,B,c,D}
{a,B,C,d}
{a,b,c,D}
.......
.......
........


数组等长。

------解决方案--------------------
C# code
string[] source1 = new string[] { "A", "B", "C", "D" };
string[] source2 = new string[] { "1", "2", "3", "4" };
List<string[]> list = new List<string[]>();
for (int i = 0; i < 16; i++)
{
    string[] s = source1.ToArray();
    for (int j = 0; j < 4; j++)
    {
        if (i & (2 << j - 1) == i) s[j] = source2[j];
    }
    list.Add(s);
}