请教一个用c语言来排列组合的算法
假设有若干个有限数据集合:{a1,a2,a3,......,an},{b1,b2,b3,......,bn},{c1,c2,c3,......,cn},{d1,d2,d3,......dn},..........
从每个集合中分别取出一个元素,组成一个序列如{a5,b2,c1,d4,e8,.......},用怎样的算法把所有的组合都枚举出来呢?
[解决办法]
CHROX(凌晨三点)的意见我投降\接受.不过能不用还是不用的好,写一点思路吧:设集合数为n,每个集合中元素数为n1\n2等等,可以输入实现.实现一个n位的 "数 ",极其++的操做,那么从0到最大的这个数就分别对应了左右组合.具体这个数是怎样的呢,这个数个位是n1进位的,十位是n2进位的.这个数从0做++操作到最大有多少个呢,正好是n1*n2等等的连乘积(就是这个的所有组合数),正好是每位可以对应每个集合的元素个数([]放在里就可以操作了).能不能看懂就写这么多了,循环就可以解决了