日期:2014-05-20  浏览次数:20904 次

求3个字符串的所有可能组合


用C# 写的
排列为3个1排 为空则显示0

例如 a,b,c 显示 a00,b00,c00,a0b,a0c.......


------解决方案--------------------
函数:
C# code
        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();
        }