0
我有一個方法返回給定字符串中3個元素的所有可能的組合。將三個嵌套for循環嵌入遞歸
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 acd 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