题目:有N个字符串,要求任意取M个字符串组成一个新的字符串,返回所有可能的结果。
哪位大虾有兴趣写写算法,或哪里有现成的算法可以用到,高分!

解决方案 »

  1.   

    #define  N X
    #define M Y
    char bb[N] ={'' '' };
    char cc[M];
    for(int i=0;i<N;i++ )
    {
      

  2.   

    int kk =0;
    while(kk<=N-M)
    {
    for int j=0;j< M;j++)
    {
            cc[j+kk] = bb[i+j+kk];
     }
    kk++;
    }
    }
      

  3.   

    没有经过验证的想法
    构建 M X N 维矩阵

    M = 2 , N = 3 字符串用123表示1 2 3
    1 2 3使用递归
    对M维进行遍历,每一维中取一个元素存入新字符串X中
    并要求该元素没有在X中出现过
    所得的结果就是12 13 21 23 31 32不知道表达的清不清楚
    也不知道对不对
    呵呵
      

  4.   

    楼顶的,只要2个for?
    我看至少得要3个吧至于递归,我看就不用了,问题很简单
      

  5.   

    #define  N X
    #define M Y
    char bb[N] ={'' '' };//初始化
    char cc[M];
    for(int i=0;i<N-M;i++ )
    {
    int kk =0;
    while(kk<=N-M)
    {
    for int j=0;j< M;j++)
    {
            cc[j] = bb[i+j+kk];
      }
    kk++;
    }
    }
    //就这样吧
    不好意思,按住ctrl就发出了
      

  6.   

    这样就对了
        Dim N As Integer, m As Integer
        N = 6
        m = 2
        Dim bb() As String, cc() As String, nn(200) As String
        ReDim bb(N - 1)
        ReDim cc(m - 1)
        bb(0) = "1"
        bb(1) = "2"
        bb(2) = "3"
        bb(3) = "4"
        bb(4) = "5"
        bb(5) = "6"
        Dim i As Integer, j As Integer, kk As Integer, jj As Integer
        For i = 0 To N - m
            For kk = i + 1 To N - m + 1
                nn(jj) = bb(i)
                For j = 0 To m - 2
                    cc(j) = bb(kk + j)
                    nn(jj) = nn(jj) & cc(j)
                Next
                jj = jj + 1
            Next
        Next