文字列を指定すると、左から右へ文字をピックするすべての組み合わせを出力したいと思います。入力:ABCD 出力: ABC ACD ABD BCD 交流 広告 BC BD CD左から右への文字列の組み合わせ(順列ではない)C++
私はそれを行うことができますが、私は元のために、それを一般化することはできません。文字列abcdの中で、私は1つの文字だけを削除して上記の組み合わせをすべて得ることができます。それから、2文字を削除するなどしてやることもできます。 コード:私は最初の1との組み合わせを印刷することができるように
for(int i = 1; i < name.size(); i++){
for(int j = 0; j < name.size(); j++){ // PRINT ARRAY
if(j != i) cout << name[j];
}
cout << endl;
}
どのように私はそれを一般化することができます:2文字1つの文字を削除
for(int i = 1; i < name.size(); i++){
for(int k = 2; k < name.size(); k++){
for(int j = 0; j < name.size(); j++){ // PRINT ARRAY
if(j != i && j != k) cout << name[j];
}
cout << endl;
}
}
//を削除
name = "abcdefghi";
//文字が欠落していて2文字が欠落していて、3など... このようにして、1〜nの文字が欠けているすべての組み合わせを取得する場合、私は
だからあなたはあまりにもすべての文字との組み合わせをしたくないですか? -1文字から始めたいですか? – koleygr
あなたの質問の簡単な答えは、あなたのループを別のループに入れて文字を取り除くことです。最初に文字を取り除くか、ゼロ文字を取り除くことで始めることができます – koleygr
[C++のn個のアイテムのk個の組み合わせをすべて作成する] htt38://stackoverflow.com/questions/12991758/creating-all-possible-k-combinations-of-n-items-in-c) – ljeabmreosn