如何解决Backtrackig问题
给出两个整数 n 和 k ,返回1 2 3 ... 中所有 k 个数字的可能组合n 。确保组合已排序。
我的代码如下:
void answer(vector<vector<int>> op,vector<int> temp,int index,int A,int B){
if(!B){
op.push_back(temp);
return;
}
for(int i=index; i<=(A-B+1); i++){
temp.push_back(i);
answer(op,temp,i+1,A,B-1);
temp.pop_back();
}
return;
}
vector<vector<int> > Solution::combine(int A,int B) {
vector<int> temp;
vector<vector<int>> op;
if(B>A)
return op;
answer(op,1,B);
return op;
}
对于A = B = 1,它甚至没有传递平凡的情况,因为它返回NULL而不是输出[1]。
解决方法
参数vector<vector<int>> op
是所传递内容的副本,因此op.push_back
的结果将不会出现在调用方上。
您应该添加&
并使用参考文献vector<vector<int>>& op
。
也应将vector<int> temp
用作引用vector<int>& temp
,以提高性能。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。