滴水恩情 发表于 2025-3-13 08:51:12

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企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 77. 组合 - 力扣(LeetCode)