IT评测·应用市场-qidao123.com
标题:
77. 组合 - 力扣(LeetCode)
[打印本页]
作者:
滴水恩情
时间:
2025-3-13 08:51
标题:
77. 组合 - 力扣(LeetCode)
class Solution {
private:
vector<vector<int>> result;
vector<int> path;
void backtracking(int n, int k, int startIndex) {
if (path.size() == k) {
result.push_back(path);
return;
}
for (int i = startIndex; i <= n - (k - path.size()) + 1; i++) { // 优化的地方
path.push_back(i); // 处理节点
backtracking(n, k, i + 1);
path.pop_back(); // 回溯,撤销处理的节点
}
}
public:
vector<vector<int>> combine(int n, int k) {
backtracking(n, k, 1);
return result;
}
};
复制代码
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
vector<int>path;
vector<vector<int>>result;
void backtracking(int n,int k,int startindex)
{
if(path.size()==k)
{
result.push_back(path);
return ;
}
for(int i=startindex;i<=n;i++)
{
path.push_back(i);
backtracking(n,k,i+1);
path.pop_back();
}
}
int main()
{
int n,k;
cin>>n>>k;
backtracking(n,k,1);
for (const auto& comb : result)
{
for (int num : comb)
{
cout << num << " ";
}
cout << endl;
}
return 0;
}
复制代码
剪枝操作:
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
vector<int>path;
vector<vector<int>>result;
void backtracking(int n,int k,int startindex)
{
if(path.size()==k)
{
result.push_back(path);
return ;
}
for(int i=startindex;i<=n-(k-path.size())+1;i++)
{
path.push_back(i);
backtracking(n,k,i+1);
path.pop_back();
}
}
int main()
{
int n,k;
cin>>n>>k;
backtracking(n,k,1);
for (const auto& comb : result)
{
for (int num : comb)
{
cout << num << " ";
}
cout << endl;
}
return 0;
}
复制代码
输出二维数组
for (auto& j : result)
{
for (int i : j)
{
cout << i << " ";
}
cout << endl;
}
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/)
Powered by Discuz! X3.4