指定された文字列の可能なすべての組み合わせを辞書順に生成するコードを作成しようとしました。
私が書いたコードは次のとおりです。
void get(char *n)
{
int l=strlen(n);
sort(n,n+l);
int k=0,m,i,j,z;
while(k<l)
{
m=k;
for(i=k;i<l;i++)
{
for(j=k;j<=i;j++)
cout<<n[j];
cout<<"\n";
}
for(z=m+2;z<l;z++)
cout<<n[m]<<n[z]<<"\n";
k++;
}
}
int main()
{
char n[100];
cin>>n;
get(n);
return 0;
}
文字列が abcde であるとします。
私のコードは次のような組み合わせを生成していません:
abd
abe
文字列 abcde の出力は次のとおりです。
a
ab
abc
abcd
abcde
ac
ad
ae
b
bc
bcd
bcde
bd
be
c
cd
cde
ce
d
de
e
出力に次のような文字列が含まれていません。abd abe
これで質問が明確になることを願っています
効率的なアルゴリズムを使用してこれらすべての組み合わせを生成する方法