有这样一个数组
string[] arr = {"a", "b", "c", "d", "e", "f", "g", "h"};要的结果是
a
b
c
d
e
f
g
ab
bc
cd
de
ef
fg
gh
abc
bcd
cde
def
efg
fgh
abcd
bcde
cdef
defg
efgh
abcde
bcdef
cdefg
defgh
abcdef
bcdefg
cdefgh
abcdefg
bcdefgh
=======================
abcdefgh 大于7字的串不要
求解

解决方案 »

  1.   


    void Main()
    {
    Dictionary<string, int> dic = new Dictionary<string, int>();
    for (int i = 0; i < m_Data.Length; i++)
    {
    Console.WriteLine(m_Data[i]);//如果不需要打印单元素的组合,将此句注释掉
    dic.Add(m_Data[i], i);
    }
    GetString(dic);
       /*
       a
    b
    c
    d
    e
    f
    g
    h
    ab
    ac
    ad
    ae
    af
    ag
    ah
    bc
    bd
    be
    bf
    bg
    bh
    cd
    ce
    cf
    cg
    ch
    de
    df
    dg
    dh
    ef
    eg
    eh
    fg
    fh
    gh
    abc
    abd
    abe
    abf
    abg
    abh
    acd
    ace
    acf
    acg
    ach
    ade
    adf
    adg
    adh
    aef
    aeg
    aeh
    afg
    afh
    agh
    bcd
    bce
    bcf
    bcg
    bch
    bde
    bdf
    bdg
    bdh
    bef
    beg
    beh
    bfg
    bfh
    bgh
    cde
    cdf
    cdg
    cdh
    cef
    ceg
    ceh
    cfg
    cfh
    cgh
    def
    deg
    deh
    dfg
    dfh
    dgh
    efg
    efh
    egh
    fgh
    abcd
    abce
    abcf
    abcg
    abch
    abde
    abdf
    abdg
    abdh
    abef
    abeg
    abeh
    abfg
    abfh
    abgh
    acde
    acdf
    acdg
    acdh
    acef
    aceg
    aceh
    acfg
    acfh
    acgh
    adef
    adeg
    adeh
    adfg
    adfh
    adgh
    aefg
    aefh
    aegh
    afgh
    bcde
    bcdf
    bcdg
    bcdh
    bcef
    bceg
    bceh
    bcfg
    bcfh
    bcgh
    bdef
    bdeg
    bdeh
    bdfg
    bdfh
    bdgh
    befg
    befh
    begh
    bfgh
    cdef
    cdeg
    cdeh
    cdfg
    cdfh
    cdgh
    cefg
    cefh
    cegh
    cfgh
    defg
    defh
    degh
    dfgh
    efgh
    abcde
    abcdf
    abcdg
    abcdh
    abcef
    abceg
    abceh
    abcfg
    abcfh
    abcgh
    abdef
    abdeg
    abdeh
    abdfg
    abdfh
    abdgh
    abefg
    abefh
    abegh
    abfgh
    acdef
    acdeg
    acdeh
    acdfg
    acdfh
    acdgh
    acefg
    acefh
    acegh
    acfgh
    adefg
    adefh
    adegh
    adfgh
    aefgh
    bcdef
    bcdeg
    bcdeh
    bcdfg
    bcdfh
    bcdgh
    bcefg
    bcefh
    bcegh
    bcfgh
    bdefg
    bdefh
    bdegh
    bdfgh
    befgh
    cdefg
    cdefh
    cdegh
    cdfgh
    cefgh
    defgh
    abcdef
    abcdeg
    abcdeh
    abcdfg
    abcdfh
    abcdgh
    abcefg
    abcefh
    abcegh
    abcfgh
    abdefg
    abdefh
    abdegh
    abdfgh
    abefgh
    acdefg
    acdefh
    acdegh
    acdfgh
    acefgh
    adefgh
    bcdefg
    bcdefh
    bcdegh
    bcdfgh
    bcefgh
    bdefgh
    cdefgh
    abcdefg
    abcdefh
    abcdegh
    abcdfgh
    abcefgh
    abdefgh
    acdefgh
    bcdefgh    */
    }
     
    static string[] m_Data = {"a", "b", "c", "d", "e", "f", "g", "h"};
      static void GetString(Dictionary<string,int> dd)
    {
    Dictionary<string, int> dic = new Dictionary<string, int>();
    foreach (KeyValuePair<string, int> kv in dd)
    {
    for (int i = kv.Value + 1; i < m_Data.Length; i++)
    {
    string temp=kv.Key + m_Data[i];
    if(temp.Length<=7)
    {
    Console.WriteLine(temp);
    dic.Add(kv.Key + m_Data[i], i);
    }
    }
    }
    if(dic.Count>0) GetString(dic);
    }
      

  2.   

    http://topic.csdn.net/u/20110610/13/d1924231-0a45-4826-ac2a-7bbcfcb9fc93.html用组合算法从1到7求一遍即可.
      

  3.   

    是指中间不能跳开吗?
    比如ag跳开了中间的bcdef?
      

  4.   

    如果是那样的话就简单了.你把每个字符看做一张牌它们并排放在一个盒子里正好塞满.
    然后手里有不同大小的框,可以在盒子里滑动.透过这些框分别可以一次性看到1张~7张的牌.
    框最初在最左边也就是"a"的位置.自左向右移.但框不能移超出盒子.ok.现在选取一个大小为3的框.每次向右滑动一个牌位.一直滑到结束.
    整个过程中每一步框中看到的牌就是长度为3的一个结果.以此类推只要把大小为1~大小为7的框全部滑一次就能得到所要的结果.不知道lz看明白没有.暂时没时间写代码.
    等有时间过来看没人回答就丢段代码
      

  5.   

    本帖最后由 caozhy 于 2011-06-13 14:54:33 编辑
      

  6.   

    acdfjk
    acdghi
    acdghj
    acdghk
    acdgij
    acdgik
    acdgjk
    acdhij
    acdhik
    acdhjk
    acdijk
    acefgh
    acefgi
    acefgj
    acefgk
    acefhi
    acefhj
    acefhk
    acefij
    acefik
    acefjk
    aceghi
    aceghj
    aceghk
    acegij
    acegik
    acegjk
    acehij
    acehik
    acehjk
    aceijk
    acfghi
    acfghj
    acfghk
    acfgij
    acfgik
    acfgjk
    acfhij
    acfhik
    acfhjk
    acfijk
    acghij
    acghik
    acghjk
    acgijk
    achijk
    adefgh
    adefgi
    adefgj
    adefgk
    adefhi
    adefhj
    adefhk
    adefij
    adefik
    adefjk
    adeghi
    adeghj
    adeghk
    adegij
    adegik
    adegjk
    adehij
    adehik
    adehjk
    adeijk
    adfghi
    adfghj
    adfghk
    adfgij
    adfgik
    adfgjk
    adfhij
    adfhik
    adfhjk
    adfijk
    adghij
    adghik
    adghjk
    adgijk
    adhijk
    aefghi
    aefghj
    aefghk
    aefgij
    aefgik
    aefgjk
    aefhij
    aefhik
    aefhjk
    aefijk
    aeghij
    aeghik
    aeghjk
    aegijk
    aehijk
    afghij
    afghik
    afghjk
    afgijk
    afhijk
    aghijk
    bcdefg
    bcdefh
    bcdefi
    bcdefj
    bcdefk
    bcdegh
    bcdegi
    bcdegj
    bcdegk
    bcdehi
    bcdehj
    bcdehk
    bcdeij
    bcdeik
    bcdejk
    bcdfgh
    bcdfgi
    bcdfgj
    bcdfgk
    bcdfhi
    bcdfhj
    bcdfhk
    bcdfij
    bcdfik
    bcdfjk
    bcdghi
    bcdghj
    bcdghk
    bcdgij
    bcdgik
    bcdgjk
    bcdhij
    bcdhik
    bcdhjk
    bcdijk
    bcefgh
    bcefgi
    bcefgj
    bcefgk
    bcefhi
    bcefhj
    bcefhk
    bcefij
    bcefik
    bcefjk
    bceghi
    bceghj
    bceghk
    bcegij
    bcegik
    bcegjk
    bcehij
    bcehik
    bcehjk
    bceijk
    bcfghi
    bcfghj
    bcfghk
    bcfgij
    bcfgik
    bcfgjk
    bcfhij
    bcfhik
    bcfhjk
    bcfijk
    bcghij
    bcghik
    bcghjk
    bcgijk
    bchijk
    bdefgh
    bdefgi
    bdefgj
    bdefgk
    bdefhi
    bdefhj
    bdefhk
    bdefij
    bdefik
    bdefjk
    bdeghi
    bdeghj
    bdeghk
    bdegij
    bdegik
    bdegjk
    bdehij
    bdehik
    bdehjk
    bdeijk
    bdfghi
    bdfghj
    bdfghk
    bdfgij
    bdfgik
    bdfgjk
    bdfhij
    bdfhik
    bdfhjk
    bdfijk
    bdghij
    bdghik
    bdghjk
    bdgijk
    bdhijk
    befghi
    befghj
    befghk
    befgij
    befgik
    befgjk
    befhij
    befhik
    befhjk
    befijk
    beghij
    beghik
    beghjk
    begijk
    behijk
    bfghij
    bfghik
    bfghjk
    bfgijk
    bfhijk
    bghijk
    cdefgh
    cdefgi
    cdefgj
    cdefgk
    cdefhi
    cdefhj
    cdefhk
    cdefij
    cdefik
    cdefjk
    cdeghi
    cdeghj
    cdeghk
    cdegij
    cdegik
    cdegjk
    cdehij
    cdehik
    cdehjk
    cdeijk
    cdfghi
    cdfghj
    cdfghk
    cdfgij
    cdfgik
    cdfgjk
    cdfhij
    cdfhik
    cdfhjk
    cdfijk
    cdghij
    cdghik
    cdghjk
    cdgijk
    cdhijk
    cefghi
    cefghj
    cefghk
    cefgij
    cefgik
    cefgjk
    cefhij
    cefhik
    cefhjk
    cefijk
    ceghij
    ceghik
    ceghjk
    cegijk
    cehijk
    cfghij
    cfghik
    cfghjk
    cfgijk
    cfhijk
    cghijk
    defghi
    defghj
    defghk
    defgij
    defgik
    defgjk
    defhij
    defhik
    defhjk
    defijk
    deghij
    deghik
    deghjk
    degijk
    dehijk
    dfghij
    dfghik
    dfghjk
    dfgijk
    dfhijk
    dghijk
    efghij
    efghik
    efghjk
    efgijk
    efhijk
    eghijk
    abcdefg
    abcdefh
    abcdefi
    abcdefj
    abcdefk
    abcdegh
    abcdegi
    abcdegj
    abcdegk
    abcdehi
    abcdehj
    abcdehk
    abcdeij
    abcdeik
    abcdejk
    abcdfgh
    abcdfgi
    abcdfgj
    abcdfgk
    abcdfhi
    abcdfhj
    abcdfhk
    abcdfij
    abcdfik
    abcdfjk
    abcdghi
    abcdghj
    abcdghk
    abcdgij
    abcdgik
    abcdgjk
    abcdhij
    abcdhik
    abcdhjk
    abcdijk
    abcefgh
    abcefgi
    abcefgj
    abcefgk
    abcefhi
    abcefhj
    abcefhk
    abcefij
    abcefik
    abcefjk
    abceghi
    abceghj
    abceghk
    abcegij
    abcegik
    abcegjk
    abcehij
    abcehik
    abcehjk
    abceijk
    abcfghi
    abcfghj
    abcfghk
    abcfgij
    abcfgik
    abcfgjk
    abcfhij
    abcfhik
    abcfhjk
    abcfijk
    abcghij
    abcghik
    abcghjk
    abcgijk
    abchijk
    abdefgh
    abdefgi
    abdefgj
    abdefgk
    abdefhi
    abdefhj
    abdefhk
    abdefij
    abdefik
    abdefjk
    abdeghi
    abdeghj
    abdeghk
    abdegij
    abdegik
    abdegjk
    abdehij
    abdehik
    abdehjk
    abdeijk
    abdfghi
    abdfghj
    abdfghk
    abdfgij
    abdfgik
    abdfgjk
    abdfhij
    abdfhik
    abdfhjk
    abdfijk
    abdghij
    abdghik
    abdghjk
    abdgijk
    abdhijk
    abefghi
    abefghj
    abefghk
    abefgij
    abefgik
    abefgjk
    abefhij
    abefhik
    abefhjk
    abefijk
    abeghij
    abeghik
    abeghjk
    abegijk
    abehijk
    abfghij
    abfghik
    abfghjk
    abfgijk
    abfhijk
    abghijk
    acdefgh
    acdefgi
    acdefgj
    acdefgk
    acdefhi
    acdefhj
    acdefhk
    acdefij
    acdefik
    acdefjk
    acdeghi
    acdeghj
    acdeghk
    acdegij
    acdegik
    acdegjk
    acdehij
    acdehik
    acdehjk
    acdeijk
    acdfghi
    acdfghj
    acdfghk
    acdfgij
    acdfgik
    acdfgjk
    acdfhij
    acdfhik
    acdfhjk
    acdfijk
    acdghij
    acdghik
    acdghjk
    acdgijk
    acdhijk
    acefghi
    acefghj
    acefghk
    acefgij
    acefgik
    acefgjk
    acefhij
    acefhik
    acefhjk
    acefijk
    aceghij
    aceghik
    aceghjk
    acegijk
    acehijk
    acfghij
    acfghik
    acfghjk
    acfgijk
    acfhijk
    acghijk
    adefghi
    adefghj
    adefghk
    adefgij
    adefgik
    adefgjk
    adefhij
    adefhik
    adefhjk
    adefijk
    adeghij
    adeghik
    adeghjk
    adegijk
    adehijk
    adfghij
    adfghik
    adfghjk
    adfgijk
    adfhijk
    adghijk
    aefghij
    aefghik
    aefghjk
    aefgijk
    aefhijk
    aeghijk
    afghijk
    bcdefgh
    bcdefgi
    bcdefgj
    bcdefgk
    bcdefhi
    bcdefhj
    bcdefhk
    bcdefij
    bcdefik
    bcdefjk
    bcdeghi
    bcdeghj
    bcdeghk
    bcdegij
    bcdegik
    bcdegjk
    bcdehij
    bcdehik
    bcdehjk
    bcdeijk
    bcdfghi
    bcdfghj
    bcdfghk
    bcdfgij
    bcdfgik
    bcdfgjk
    bcdfhij
    bcdfhik
    bcdfhjk
    bcdfijk
    bcdghij
    bcdghik
    bcdghjk
    bcdgijk
    bcdhijk
    bcefghi
    bcefghj
    bcefghk
    bcefgij
    bcefgik
    bcefgjk
    bcefhij
    bcefhik
    bcefhjk
    bcefijk
    bceghij
    bceghik
    bceghjk
    bcegijk
    bcehijk
    bcfghij
    bcfghik
    bcfghjk
    bcfgijk
    bcfhijk
    bcghijk
    bdefghi
    bdefghj
    bdefghk
    bdefgij
    bdefgik
    bdefgjk
    bdefhij
    bdefhik
    bdefhjk
    bdefijk
    bdeghij
    bdeghik
    bdeghjk
    bdegijk
    bdehijk
    bdfghij
    bdfghik
    bdfghjk
    bdfgijk
    bdfhijk
    bdghijk
    befghij
    befghik
    befghjk
    befgijk
    befhijk
    beghijk
    bfghijk
    cdefghi
    cdefghj
    cdefghk
    cdefgij
    cdefgik
    cdefgjk
    cdefhij
    cdefhik
    cdefhjk
    cdefijk
    cdeghij
    cdeghik
    cdeghjk
    cdegijk
    cdehijk
    cdfghij
    cdfghik
    cdfghjk
    cdfgijk
    cdfhijk
    cdghijk
    cefghij
    cefghik
    cefghjk
    cefgijk
    cefhijk
    ceghijk
    cfghijk
    defghij
    defghik
    defghjk
    defgijk
    defhijk
    deghijk
    dfghijk
    Press any key to continue . . .
      

  7.   

    本帖最后由 caozhy 于 2011-06-13 16:31:16 编辑
      

  8.   

    谢谢 caozhy~! 
    学习算法基本知识应该从哪里学起啊
      

  9.   

    推荐你一本科普读物,《编程珠玑》,然后是入门读物《算法导论》。能看懂 knuht's 的大部头就算比较精通了。