比如我有定义一数组
private static char[] c={'a','b','c','d'}把该数组中的元素的所有组合放到一个新数组ArrayList或string[]数组中组合有
a,aa,ab,ac,ad,aaa,aab,aac,aad,aba,abb,abcc,abd,aca,acb,.....
b,ba,bb,bc,bd,baa....
c....
d...

解决方案 »

  1.   

    用递归的话,如果我的char[]数组比较大的话,会不会很慢还有,怎么把组合的string长度限制在某个值,比如3,不然用26个字母+数字全组合,100G硬盘不一定放得下。
      

  2.   

    先得到所要求组合数组的元素个数,{'a','b','c','d'}也就是4个,那么就是数学里的c41,c42,c43,c44...就好比c43,先初始化一个新数组{1,2,3},{2,3,4}(出口),然后从数组的末尾开始判断,如果元素值未达到上限值(这里就是4,和{2,3,4}的对应元素做比较),则加1,随后让后面的元素递增,得到{1,2,4},然后继续从数组末尾开始判断,如果当前元素值达到上限4,则前移一位,继续判断,知道找到能加1的元素,随后让后面的元素递增,这里找到的是2,所以2+1=3,后面的元素依次递增,所以是{1,3,4}...依此类推,直到达到出口为止,这是在下的愚见~~~