字典翻译 问答 小学 数学 【求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]会】
问题描述:

求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
点击显示
数学推荐
热门数学推荐
  • 语文
  • 数学
  • 英语
  • 科学
  • 作文