zoukankan      html  css  js  c++  java
  • leetcode216-Combination Sum III

    https://leetcode.com/problems/combination-sum-iii/

    用dfs枚举。

    class Solution {
    public:
        int kk, nn;
        vector<vector<int>> res;
        vector<vector<int>> combinationSum3(int k, int n) {
            kk = k, nn = n;
            vector<int> r;
            dfs(r, 0, 0);
            return res;
        }
        
    void dfs(vector<int> &a, int t, int sum) {
        if (a.size() >= kk || sum >= nn) {
            if (a.size() == kk && sum == nn) {
                res.push_back(a);
            }
            return;
        }
        for (int i = t + 1; i < 10; ++i) {
            a.push_back(i);
            dfs(a, i, sum + i);
            a.pop_back();
        }
    }
    };

    其他同类题:

    http://www.jiuzhang.com/solutions/search/?question=Combination+Sum

    1.  http://www.lintcode.com/zh-cn/problem/letter-combinations-of-a-phone-number/

    class Solution {
    public:
        vector<string> ret;
    
    vector<char> getChar(int num) {
        vector<char> ret;
        if (num == 1) return ret;
        if (num < 7 && num > 1) {
            ret.push_back('a' + (num - 2) * 3);
            ret.push_back('a' + (num - 2) * 3 + 1);
            ret.push_back('a' + (num - 2) * 3 + 2);
        } else if (num == 7) {
            ret.push_back('p');
            ret.push_back('p' + 1);
            ret.push_back('p' + 2);
            ret.push_back('p' + 3);
        } else if (num == 8) {
            ret.push_back('t');
            ret.push_back('t' + 1);
            ret.push_back('t' + 2);
        } else if (num == 9) {
            ret.push_back('w');
            ret.push_back('w' + 1);
            ret.push_back('w' + 2);
            ret.push_back('w' + 3);
        }
        return ret;
    }
    
    void dfs(string& s, int t, string &d) {
        if (t == d.size() && s.size() > 0) {
            ret.push_back(s);
            return;
        }
        vector<char> cs = getChar(d[t] - '0');
        for (int i = 0; i < cs.size(); ++i) {
            s.push_back(cs[i]);
            dfs(s, t + 1, d);
            s.pop_back();
        }
    }
    
    vector<string> letterCombinations(string& digits) {
        // Write your code here
        string s = "";
        dfs(s, 0, digits);
        return ret;
    }
    };
  • 相关阅读:
    如何入门深度学习
    机器学习之激活函数
    轻量化模型之SqueezeNet
    聚类算法之MeanShift
    目标检测之RefineDet
    语义分割之RefineNet
    数学基础之高斯核函数
    目标检测之人脸识别
    梯度下降算法及优化方法
    机器学习高阶训练营知识点一览
  • 原文地址:https://www.cnblogs.com/fripside/p/5495549.html
Copyright © 2011-2022 走看看