zoukankan      html  css  js  c++  java
  • [leetcode]Combinations

    问题描写叙述:

    Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.

    For example,
    If n = 4 and k = 2, a solution is:

    [
      [2,4],
      [3,4],
      [2,3],
      [1,2],
      [1,3],
      [1,4],
    ]
    

    基本思想:

    回溯法

    代码:

     vector<int> record;         //C++
        vector<vector<int> >result;
        set<vector<int> > myset;
        int kNum = 0;
        
        void addSolution(){
            vector<int> tmp(record.begin(),record.end());
            sort(tmp.begin(),tmp.end());
            if(myset.find(tmp) == myset.end()){
                result.push_back(tmp);
                myset.insert(tmp);   
            }
        }
        void subCombinationSum(vector<int> &cadidates,int bpos,vector<int> &base, int k){
            if(kNum == k){
                addSolution();
            }
            
            int size = cadidates.size();
            for(int i = bpos; i < size; i++){
                if(base[i] == 1)
                    continue;
                    
                record.push_back(cadidates[i]);
                base[i] = 1;
                kNum++;
                subCombinationSum(cadidates,<span style="color:#FF0000;"><strong>i+1</strong></span>,base,k);  //i+1  避免反复
                record.pop_back();
                base[i] = 0;
                kNum--;
            }
        }
        
        vector<vector<int> > combine(int n, int k) {
            vector<int> candidates(n);
            for(int i = 0; i < n; i++)
                candidates[i] = i+1;
            vector<int> base(candidates.size(),0);
            subCombinationSum(candidates,0,base,k);
            return result;
        }


  • 相关阅读:
    字段与表的对应关系
    java初学代码,还不太熟练
    编程学习心得
    ps中经常遇到的问题
    R语言矩阵运算加速
    写代码过程中一些数字推理公式
    EXCEL中常用的函数
    css样式中常见的属性
    R语言的基本矩阵运算
    excel常用的函数
  • 原文地址:https://www.cnblogs.com/jhcelue/p/6920107.html
Copyright © 2011-2022 走看看