问题标题:
【求N个序列的排列组合算法:如list1[a,b,c],list2[d,e,f].list3[ghi]会排列产生(a,d,g)(a,d,h)(a,d,i)等有N个序列:N未知,每次从每一个序列中各取一个元素,组成新的序列,如list1[a,b,c],list2[d,e,f].list3[ghi]会】
问题描述:
求N个序列的排列组合算法:如list1[a,b,c],list2[d,e,f].list3[ghi]会排列产生(a,d,g)(a,d,h)(a,d,i)等
有N个序列:N未知,每次从每一个序列中各取一个元素,组成新的序列,如list1[a,b,c],list2[d,e,f].list3[ghi]会排列产生(a,d,g),(a,d,h),(a,d,i)...
,求得到新序列集合的算法.
李立萍回答:
最容易想到是递归,先从第一个list里面取一个元素,那么就是有3中选择(a,b,c),取完一个元素后,问题就变成了在N-1个序列里的排列组合:
//初始化所有的序列
char[]list=newchar[3];
list[]data=newlist[N]{/*初始化所有的list*/}
char[]result=newchar[N];
voidFun(intstart,list[]data,char[]result)
{
if(start==N)
{
//打印result
return;
}
for(inti=0;i
点击显示
数学推荐
热门数学推荐