首页 > 编程语言 >leetcode 77 组合 C/C++ 深度优先搜索

leetcode 77 组合 C/C++ 深度优先搜索

时间:2022-09-03 17:45:58浏览次数:67  
标签:case allcases int back C++ 77 value com leetcode

#include<iostream>
#include<vector>
using namespace std;

class Solution {
public:
void recursive(int n,int k,int value, int index,vector<int> &com_case, vector<vector<int>> &allcases){
if(index < k) //当还没有到第K个数时
{
com_case.push_back(value);
recursive(n,k,value+1,index+1,com_case,allcases);
//当前组合这个位置放这个数时,其他可能的组合已经列举完毕了,尝试列举这个位置不放这个数的情况
for(int i = value + 1; i <= n-k+index; i++){
com_case.pop_back();
com_case.push_back(i);
recursive(n,k,i+1,index+1,com_case,allcases);
}
com_case.pop_back();
}else{ // 如果已经到了第K个数
com_case.push_back(value);
allcases.push_back(com_case);
com_case.pop_back();
for(int i = value + 1;i<=n;i++) // 列举这一个位置其他数的情况
{
com_case.push_back(i);
allcases.push_back(com_case);
com_case.pop_back();
}
}
}

vector<vector<int>> combine(int n, int k) {
vector<int> com_case;
vector<vector<int>> allcases;
recursive(n,k,1,1,com_case,allcases);
return allcases;
}
};

int main(){
Solution s;
vector<vector<int>> retVec = s.combine(4,3);
for(auto it = retVec.begin();it!=retVec.end();it++)
{
for(auto ij = (*it).begin(); ij!=(*it).end();ij++) cout<<*ij<<" ";

cout<<endl;
}
cout<<endl;
return 1;
}

标签:case,allcases,int,back,C++,77,value,com,leetcode
From: https://www.cnblogs.com/daniel123/p/16653152.html

相关文章

  • leetcode1790-仅执行一次字符串交换能否使两个字符串相等
     int count=0,sizes=s1.size(),sum1=0,sum2=0;        for(int i=0;i<sizes;i++)        {            if(s1[i]!=s2[i])   ......
  • LeetCode/加油站
    在一条环路上有n 个加油站,其中第i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第i个加油站开往第i+1 个加油站需要消耗汽油 cost[i] 升。你从......
  • leetcode202-快乐数
    https://leetcode.cn/problems/happy-number/一开始的错误代码int sum;        if(n==1)    return true;        while(n>9)       ......
  • 信息学一本通 1177:奇数单增序列
    时间限制:1000ms      内存限制:65536KB提交数:37879   通过数:19375【题目描述】给定一个长度为N(不大于500)的正整数序列,请将其中的所有奇数取出......
  • C++ 基础
    析构函数  析构函数与构造函数相对应,构造函数是对象创建的时候自动调用的,而析构函数就是对象在销毁的时候自动调用的的。  析构函数只有一个;没有参数;没有定义析构函......
  • 1、C++基础知识代码笔记
    C++课堂笔记(一)说明:此笔记是学习于B站黑马程序员的C++视频所作的,感谢黑马程序员的教学;如有什么不足之处,望各位赐教。仅供学习。第一个代码:书写helloworld#include<iost......
  • C++ 火车头
    试了一下,去掉火车头本地测试跑了9.1s...加上后是1.0s,神奇地AC了还有就是好像关了流同步的cin和cout甚至比快读orscanf来得快 #pragmaGCCoptimize(3)#pragmaGCC......
  • 信息学一本通 第一章 C++语言入门 2060:【例1.1】计算机输出
    【题目描述】在屏幕上输出“HelloWorld!”。【输入】(无)【输出】(无)【输入样例】(无)【输出样例】HelloWorld!#include<iostream>usingnamespacestd;in......
  • 第1章 从C到C++
    C++支持:面向过程编程、面向对象编程(OOP)和泛型编程。我们很难说C++拥有独立的编译器,例如Windows下的微软编译器(cl.exe)、Linux下的GCC编译器、Mac下的Clang编译器......
  • [Google] LeetCode 562 Longest Line of Consecutive One in Matrix
    Givenanmxnbinarymatrixmat,returnthelengthofthelongestlineofconsecutiveoneinthematrix.Thelinecouldbehorizontal,vertical,diagonal,or......