char ** str=new char [n*m][MAX_LENG];
int i=0;
for(int n=0;n<N;n++)
 for (int m=0;m<M;m++)
{}

解决方案 »

  1.   

    char str[N*M][MAX_LENG];
    int i=0;
    for(int n=0;n<N;n++)
     for (int m=0;m<M;m++)
    {
       sprintf(str[i++],"str%02d%02d",n,m);
    } 结果是
    str0000
    str0001
    str0002
    str0100
    str0101
    str0102
    str0200
    str0201
    str0202
    str0300
    str0301
    str0302
      

  2.   

    Kevin_qing先生,我要的不一定是两个数组的组合,
    这是个标准的数学上的组合问题,Thank you
      

  3.   

    下面这个总可以吧:
    #include <stdio.h>
    // N个数的全排列:typedef void (*MyOutputFunc)(int numb, char out[]);void Iterate(int n, char in[], char out[], int nmax, int& numb, MyOutputFunc f)
    {
    if( n == 0 )
    {
    f(numb++, out);
    return;
    }
    for(int i = 0; i < nmax; i++)
    {
    if( in[i] != -1 )
    {
    out[nmax-n] = in[i];
    in[i] = -1;
    Iterate(n-1, in, out, nmax, numb, f);
    in[i] = out[nmax-n];
    }
    }
    }void PrintP(int numb, char out[])
    {
    printf("[%08d]: %s\n", numb, out);
    }#define MAX  62
    main()
    {
    char    in[MAX+1], out[MAX+1];
    int     numb = 0;
    for( int i = 0; i < MAX; i++ )
    {
    if( i < 26 ) in[i] = 'a'+i;
    else if( i < 52 ) in[i] = 'A'+i-26;
    else in[i] = '0'+i-52;
    out[i] = -1;
    }
    in[i] = out[i] = 0;
    Iterate(MAX, in, out, MAX, numb, PrintP);
    printf("\nAll items are %d\n", numb);
    return 0;
    }
      

  4.   

    我明白了,这是我的方法:
    nTotal = 1;
    for(i = 0;i<n;i++){
        nTotal = nTotal * m[i];
    }mCount[0] = 1;
    for(i=1;i<nUseTimes;i++){
        mCount[i] = m[i-1] * mCount[i-1];
    }        int         nMod;
    String[]    sCombo = new String[nTotal][nUseTimes];
    for(i = 0;i < nTotal;i ++){
        for(j=0;j<nUseTimes;j++){
            nMod = (i / mCount[j]) % nCount[j];
            sCombo[i][j] = sTimeLists[j][nMod];
        }
    }