****************1000Help!Help!Help!求乘法原理的算法
现在n个字符数组                  
 array1   { "X1Y1 ", "X1Y2 ", "3a ", "4 ",.., "X1Ym1 "}   //长度   m1   > =1 
 array2   { "X2Y1 ", "X2Y2 ",.., "X2Ym2 "}   //长度   m2   > =1 
 ... 
 arrayn   { "XnY1 ", "sfsfsfaafb ",.., "X2Ymn "}   ////长度   mn   > =1   
 求每次从n个数组中的各数组各取一个值,组成的n项相加的排列字符串,相当于概率中的乘法法则 
 如 
 X1Y1+X2Y1...+XnY1 
 ... 
 X1Ym1+X2Ym2   ...+X2Ymn 
 共有m1*m2*...*mn个排列字符串   
 求算法. 
------解决方案--------------------csdn变得怎么样了?楼主原来是前辈了啊,帮你顶!
------解决方案--------------------人也肥了哈
------解决方案--------------------没看明白 
 N个循环不行么? 
 for (i,j,k,...) 
 arrray1[i] + array2[j] + array3[k]+ ... 
 不过ms是要算法 
 这个是最弱的 o(m1*m2*..*mn) haha
------解决方案--------------------二维字符串数是锯齿形?如果不是。用两个for 不行吗? 
 如果是。则先求得锯齿数组中最多个数的那个数组。如: 
 string temp =  " "; 
 int k=0;//数组中的最多个数 
 for(int i=0;i <n;i++) 
 { 
  if(arrary[i].length >  k ) k=arrary[i].length; 
 } 
 for(int j=0;j <k;j++)//j是数组的第二维 
 { 
  for(int h=0;h <n;h++)//h是数组的第一维 
  {  
    if(arrary[h].length >  j )  //进行判断,以免超出数组最大值. 
    temp += arrary[h][j] ; 
  } 
 }    
------解决方案--------------------n个数组就要循环n次,没有更好的办法,除非这n个数组之间有规律!!
------解决方案--------------------static void Main(string[] args) 
         { 
             int[] arrays ={ 3, 4, 5 }; 
             int[] index = new int[arrays.Length]; 
             int level = index.Length - 1; 
             index[level] = -1; 
             while (true) 
             { 
                 index[level]++; 
                 if (index[level] > = arrays[level]) 
                 { 
                     while (level> -1&&++index[level] > = arrays[level]) 
                     { 
                         level--; 
                     } 
                     if (level == -1) 
                     { 
                         break; 
                     } 
                     for (int i = level + 1; i  < index.Length; i++) 
                     { 
                         index[i] = 0; 
                     } 
                     level = index.Length - 1; 
                 } 
                 print(index); 
             } 
         }   
         private static void print(int[] index) 
         { 
             for (int i = 0; i  < index.Length-1; i++) 
             { 
                 Console.Write( "{0} +  ",index[i].ToString()); 
             } 
             Console.WriteLine(index[index.Length-1]); 
         }   
 生成每次组合的下标 
 根据些下标取字符串数组中的内容即可做乘法 相信楼主一看就明白
------解决方案--------------------学习