0
与えられた文字列の3つの要素のすべての可能な組み合わせを返すメソッドがあります。ループを入れ子にしてループを再帰に入れよう
void FindAllCombinationsBy3(string &str, int start)
{
for (int i = 0; i < str.length() - 2; i++)
{
for (int j = i + 1; j < str.length() - 1; j++)
{
for (int k = j + 1; k < str.length(); k++)
{
cout << str[i] << str[j] << str[k] << endl;
}
}
}
return;
}
これはうまく動作し、これを出力します:abc abd abe abf abd acce ace acf ade。しかし、長さの組み合わせのパラメータnを受け取るメソッドの再帰的なバージョンを記述したいと思います。だから3だけではなく、カスタムの長さ。それはおそらくこのように見えるはずです。しかし、私はちょうどこの再帰条件で迷子になった。
void FindAllCombinationsByNValues(string &str, int start, int depth, int n)
{
if (depth++ >= n)
{
return;
}
for (int i = start; i < str.length() - n + depth; i++)
{
cout << str[i];
FindAllCombinationsByNValues(str, start + 1, depth, n);
}
cout << endl;
}
これは何百万回も尋ねられましたが、他の解決策はまだ助けられていないことがわかります。
私はいくつかの点で近くにあった、しかし、あなたが行ったように、文字を蓄積didn'tの。それは助けた – earthQuake