给定一个字符串,如abb,求他的排列组合,字符串长度不一定,有没有好点的算法。

解决方案 »

  1.   

    字符串长度不一定??
    那不就是无数种了?
    a
    aa
    aaa
    aaaa
    aaaaa
    aaaaaa
    aaaaaaa
    b
    bb
    bbb
    bbbb
    bbbbb
    bbbbbb
      

  2.   

    http://topic.csdn.net/u/20101103/14/3301faea-2bf7-43a1-9f6c-e1d7b882de45.html
      

  3.   

    http://topic.csdn.net/u/20090217/21/f41ed9f6-f929-451c-a5c9-80d2e408422a.html?69720
      

  4.   

    你理解错了,abb是随便输入的一个字符串 哈哈
      

  5.   

    现有若干数字,将所有的排列组合可能均显示出来. 
    例如:4个数字 
    1,2,3,4 




    1,2 
    1,3 
    1,4 
    2,3 
    2,4 
    3,4 
    1,2,3 
    1,2,4 
    1,3,4 
    2,3,4 
    1,2,3,4 
    如何存储不限.-->蓉儿select top 100 id=identity(int,1,1) into # from sysobjects
    declare @s nvarchar(100)
    set @s='1,2,3,4'
    select col=substring(@s,id,charindex(',',@s+',',id)-id)
    into #1
    from #
    where charindex(',',','+@s,id)=idinsert #1 select @swhile @@rowcount>0
    insert #1
    select distinct left(col,len(col)-1)
    from
    (
        select col=stuff(replace(','+b.col+',',','+a.col+',',','),1,1,'')
        from #1 a,#1 b
        where charindex(','+a.col+',',','+b.col+',')>0 and a.col<>b.col
    ) t
    where left(col,len(col)-1) not in (select col from #1)
    select * from #1 order by len(col)
    /*
    col
    ---------
    1
    2
    3
    4
    1,2
    1,3
    1,4
    2,3
    2,4
    3,4
    1,2,3
    1,2,4
    1,3,4
    2,3,4
    1,2,3,4(15 行受影响)
    */
    drop table #
    drop table #1
    本文来自CSDN博客,转载请标明出处:
    详细可见tony哥的博客:
    http://blog.csdn.net/htl258/archive/2009/04/14/4071642.aspx
      

  6.   

    C#
    http://www.cnblogs.com/zzp28/articles/1792484.html
      

  7.   

    最近学习linq        //不分顺序
            public static void NoSort()
            {
                List<string> list1 = new List<string>() { "A", "B", "C" };
                var Query1 = (from i in list1
                              from j in list1
                              select i + j).ToList();
                var Query2 = (from i in list1
                              from j in list1
                              from k in list1
                              select i + j + k).ToList();
                list1.AddRange(Query1.ToList());
                list1.AddRange(Query2.ToList());
            }
            //分顺序
            public static void Sort()
            {
                List<string> list1 = new List<string>() { "A", "B", "C" };
                var Query1 = (from i in list1
                              from j in list1
                              where list1.IndexOf(i) >= list1.IndexOf(j)
                              select i + j).ToList();
                var Query2 = (from i in list1
                              from j in list1
                              from k in list1
                              where list1.IndexOf(i) >= list1.IndexOf(j) && list1.IndexOf(j) >= list1.IndexOf(k)
                              select i + j + k).ToList();
                list1.AddRange(Query1.ToList());
                list1.AddRange(Query2.ToList());
            }
      

  8.   

    比如说,输入一个字符串,abb
    输出  abb,bab,bba    
      

  9.   

    输入 abca
    输出  abca
         abac
         aabc
         acab
         acba
         baca
         caba
         bcaa
         cbaa
         baac
         等..
      

  10.   

    把输入的字符串拆成数组char 然后进行循环 就是要循环比较多次 不知道有没有更好的办法。
      

  11.   

    http://topic.csdn.net/u/20090217/21/f41ed9f6-f929-451c-a5c9-80d2e408422a.html?69720
    饺子给的链接看了?
      

  12.   

    http://topic.csdn.net/u/20100827/11/b1b5d0ec-b453-41c0-be56-7ad467755da4.html?391068270