我有以下递归函数输出部分组合:
void comb(string sofar, string rest, int n) {
string substring;
if (n == 0)
cout << sofar << endl;
else {
for (size_t i = 0; i < rest.length(); i++) {
substring = rest.substr(i + 1, rest.length());
comb(sofar + rest[i], substring, n - 1);
}
}
}
Run Code Online (Sandbox Code Playgroud)
如此称呼:
comb("", "abcde", 3);
Run Code Online (Sandbox Code Playgroud)
通过部分组合,我的意思是它使用n个选项和r个元素(而不是n个选项,n个元素).
但是,我想考虑元素的顺序(即排列).我可以找到很多完全排列的算法,但不是部分的.