2017-09-06 3 views
-4

2つの文字列を持つ最初の単語と2番目のすべての組み合わせを生成したい。すべての可能な組み合わせを生成するために、最初の単語に2番目の単語を挿入したいと思います。唯一のルールは、この例では互いに2つの単語のすべての組み合わせを生成

後ろ

なし挿入単語は:

string input = "Hello"; 
string secondInput = "."; 

この方法は: GenerateAllCombinations(input,secondInput);を返す:

//1 dot 
.Hello 
H.ello 
He.llo 
Hel.lo 
Hell.o 
Hello. 

//2 dot 
.H.ello 
.He.llo 
.Hel.lo 
.Hel.lo 
.Hell.o 
.Hello. 
.He.llo 
.Hel.lo 
.Hell.o 
.Hello. 
.Hel.lo 
.Hell.o 
.Hello. 
H.e.llo 
H.el.lo 
H.ell.o 
H.ello. 
Hel.l.o 
Hel.lo. 
Hell.o. 

//3 dots 
.H.e.llo 
.H.el.lo 
.H.ell.o 
.H.ello. 
.He.l.lo 
.He.ll.o 
.He.llo. 
.Hel.l.o 
.Hel.lo. 
.Hell.o. 

//4 dots 
.H.e.l.lo 
.H.e.ll.o 
.H.e.llo. 
.He.l.l.o 
.He.l.lo. 
.Hel.l.o. 

//5 dots 
.H.e.l.l.o 
.H.e.l.lo. 
.He.l.l.o. 

原則として私はこのような何かをしたくないと言う: Hell.o....

これにより、無制限の組み合わせが生成されなくなります。

だから、最良のアイデアは再帰を使用することです。私はすでに私が望むことをしているコードを追加しますが、再帰を使用していません。主な問題は、すべての入力で自分のコードを使用できないことです。それはsize'd単語の1つのタイプでのみ働いています。あなたはこれをどのように解決するか考えていますか?

+2

これまでに何を試しましたか? –

+0

再帰的メソッドはそれ自身を呼び出すので、メソッドは最初の文字列の各列のパラメータとしてカウンタを必要とします。 – louis12356

+4

助けを求める前に試して問題を起こしてください。 – RH6

答えて

1

プレースホルダはM=Len(Input)+1です。
2^Mドット(ドットなしのソース文字列を含む)を配置(または省略)するバリアントがあります。
したがって、ループカウンタのバイナリ表現に0から2^M-1にループを作り、一ビットの位置にドットを挿入

例:「こんにちは」入力カウンタの
が0から63に移行
カウンタ21dec=010101bin対応"He.ll.o"に

関連する問題