有字符串abcd现在想实现得到以下遍历组合:
1级 ab ac ad aa (4)
2级 aaa aab aac aad aba abb abc abd aca acb acc acd ada adb adc add (4*4)
3级 abcda abcdb abcdc abcdd ..... (16*16)
偶数学不太好,-_-

解决方案 »

  1.   

    顺手写了前两层,var 
     s:string;
     i1,i2,i3;
     
     s1,s2,s3,s_all:string; 
    begin
      s='abcd';
     
      //第一级 
      for i1 = 1 to 4 do
      begin
        s1 = s[1]+s[i]
        s_all = s_all +';'+ s1;  
      end;
      //输入s_all
      //showmessge(s_all)
      //第二级
      for i1 = 1 to 4 do
      begin
        s1 = s[1]+s[si];
        
        for i2 = 1 to 4 do
        begin
          s2 = s1+s[i];
          s_all = s_all +";"+ s2;  
        end;
      end;
      //输入s_all
      //showmessge(s_all)
      

  2.   

    需求描述的不太正确,改一下有字符串abcd现在想实现得到以下遍历组合:
    1级 a
    2级 ab ac ad aa (4)
    3级 aaa aab aac aad aba abb abc abd aca acb acc acd ada adb adc add (4*4)
    4级 abcda abcdb abcdc abcdd ..... (16*4)
    5级 ......
    即下一级的前几个字符串为上一级的字符串
      

  3.   

    全排列.. 
    n级 就是 4的 n-1 次方.. 你循环就行了..
    for i :=1 to 4^(n-1)