关于字符串组合方法-2

zjy 2000-06-15 12:12:00
有个?字符串数组
str[0] = {"str00","str01",...,"str0m"}
str[1] = {"str10","str11",...,"str1m"}
...
str[n] = {"strn0","str2",...,"strnm"}

有啥简便方法可得到他们的所有组合的结果?
newstr[0] = str00,str10,...strn0
newstr[1] = str00,str10,...strn1
...
newstr[n+1] = str00,str11,...strn0
newstr[n+2] = str00,str12,...strn0
...
...全文
228 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjy 2000-06-21
  • 打赏
  • 举报
回复
我明白了,这是我的方法:
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];
}
}

WHQ 2000-06-15
  • 打赏
  • 举报
回复
下面这个总可以吧:
#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;
}
zjy 2000-06-15
  • 打赏
  • 举报
回复
Kevin_qing先生,我要的不一定是两个数组的组合,
这是个标准的数学上的组合问题,Thank you

Kevin_qing 2000-06-15
  • 打赏
  • 举报
回复
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
Kevin_qing 2000-06-15
  • 打赏
  • 举报
回复
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++)
{

}

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧