C++ 使用deque和递归C+创建所有可能的组合+;
我有一个包含一系列数字C++ 使用deque和递归C+创建所有可能的组合+;,c++,recursion,C++,Recursion,我有一个包含一系列数字{0,1,2,3,4,5,6},我正在尝试使用递归创建这些数字的所有可能组合 这是我目前的代码 void combination(vector<node> &comb, deque<node> &numbers) { if (numbers.empty()) { for (unsigned int i = 0; i < comb.size(); i++) { cout <&
{0,1,2,3,4,5,6}
,我正在尝试使用递归创建这些数字的所有可能组合
这是我目前的代码
void combination(vector<node> &comb, deque<node> &numbers) {
if (numbers.empty()) {
for (unsigned int i = 0; i < comb.size(); i++) {
cout << comb[i].id << " ";
}
cout << "\n";
return;
}
comb.push_back(numbers.front());
numbers.pop_front();
combination(comb, numbers);
comb.pop_back();
combination(comb, numbers);
}
为什么函数不能打印出所有可能的组合
另外,这就是我想要使用的-一个包含数字的deque和一个包含每个组合的向量。您使用的是通过引用传递,我做了一些小的更改,它可以工作 代码:
#include <bits/stdc++.h>
using namespace std;
void combination(vector<int> comb, deque<int> numbers) {
if (numbers.empty()) {
for (unsigned int i = 0; i < comb.size(); i++) {
cout << comb[i] << " ";
}
cout << "\n";
return;
}
comb.push_back(numbers.front());
numbers.pop_front();
combination(comb, numbers);
comb.pop_back();
combination(comb, numbers);
}
int main() {
// your code goes here
vector<int> comb;
deque<int> numbers;
for(int i = 0;i < 7;i++) numbers.push_back(i);
combination(comb, numbers);
return 0;
}
#包括
使用名称空间std;
无效组合(向量梳、德克数){
if(number.empty()){
for(无符号整数i=0;i 您使用的是passby-reference,我做了一些小的修改,效果很好
代码:
#include <bits/stdc++.h>
using namespace std;
void combination(vector<int> comb, deque<int> numbers) {
if (numbers.empty()) {
for (unsigned int i = 0; i < comb.size(); i++) {
cout << comb[i] << " ";
}
cout << "\n";
return;
}
comb.push_back(numbers.front());
numbers.pop_front();
combination(comb, numbers);
comb.pop_back();
combination(comb, numbers);
}
int main() {
// your code goes here
vector<int> comb;
deque<int> numbers;
for(int i = 0;i < 7;i++) numbers.push_back(i);
combination(comb, numbers);
return 0;
}
#包括
使用名称空间std;
无效组合(向量梳、德克数){
if(number.empty()){
for(无符号整数i=0;i 我可以假设这是一个学校练习或其他学习经验吗?否则你应该改为使用。我用它来实现一个问题的分支定界方法。因此,我不能使用next\u permutation
同样,你在这里发布的代码不会编译。我假设应该调用permute
ins代替组合
和组合。向后推(…)
应该是梳。向后推(…)
?@CantrianBear不是一个有用的答案。如果是这样的话,这个网站就没有意义了。我显然不知道为什么它没有达到我预期的效果,这是最后的手段。你通过引用传递数字。在到达的第一个叶子上,它变为空()好的。我假设这是一个学校练习或其他学习经验?否则你应该改为使用。我用它来实现一个问题的分支定界方法。因此,我不能使用next\u permutation
,而且,你在这里发布的代码也不会编译。我假设应该调用该函数permute
而不是composition
和composition.push_back(…)
应该是comb.push_back(…)
?@CantrianBear不是一个有用的答案。如果是这样的话,这个网站就没有意义了。我显然不知道为什么它没有达到我预期的效果,这是最后的手段。你通过引用传递数字。在到达的第一个叶子上,它变为空()好的。有人在我的帖子上评论说,只有deque需要通过值传递,但这也是一个好答案。有人在我的帖子上评论说,只有deque需要通过值传递,但这也是一个好答案。