用C# 写的
排列为3个1排 为空则显示0例如 a,b,c 显示 a00,b00,c00,a0b,a0c.......

解决方案 »

  1.   

    函数:
    private char[][] GetCharCombin(char[] chars)
    {
    if (chars.Length == 0) return new char[0][];
    List<char[]> list = new List<char[]>();
    if (chars.Length == 2)
    {
    list.Add(new char[] { chars[0], chars[1] });
    list.Add(new char[] { chars[1], chars[0] });
    list.Add(new char[] { chars[0], '0' });
    list.Add(new char[] { '0', chars[0] });
    list.Add(new char[] { chars[1], '0' });
    list.Add(new char[] { '0', chars[1] });
    list.Add(new char[] { '0', '0' });
    }
    else
    {
    for(int i=0,l=chars.Length;i<l;i++)
    {
    List<char> charmap = new List<char>(chars);
    charmap.RemoveAt(i);
    char[][] charArr = GetCharCombin(charmap.ToArray());
    foreach (char[] arr in charArr)
    {
    char[] v = new char[arr.Length + 1];
    v[0] = chars[i];
    for (int i1 = 0, l1 = arr.Length; i1 < l1; i1++) { v[i1 + 1] = arr[i1]; }
    list.Add(v);
    }
    }
    }
    return list.ToArray();
    }调用方法:
    char[] charr = new char[]{'a','b','c'};
    return string.Join("\r\n", Array.ConvertAll<char[], string>(GetCharCombin(charr), o => new string(o)));