存在N个数组,输出在每个数组娶一个元素的排列组合结果:
假设:数组A={X,Y,Z}数组B={1,2}
组合的结果:
X1,X2,Y1,Y2,Z1,Z2
排列组合的结果:
X1,X2,Y1,Y2,Z1,Z2,1X,1Y,1Z,2X,2Y,2Z
要求程序可以适应N为任意数和每个长度不同的情况(设内存足够大,可不考虑效率)

解决方案 »

  1.   

    组合很容易,解决思路是数组的线性相乘。不论多少个数组,每次就是计算两个数组线性相乘,N个数组就是相乘N-1次。排列组合的原理应该是数组本身排列组合之后再线性相乘,比如A、B、C三个数组,那结果就是ABC、ACB、BAC、BCA、CAB、CBA这样六种数组线性相乘后所有元素的集合。需要写两个任意维数组的相乘的方法。再写一个给定元素的计算全排列的方法就行了。具体代码没什么特别难度,就是太复杂,我实在没动力写