• 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;
    }
    };
  • 相关阅读:
    sphinx实时索引和高亮显示
    打开页面就进行下载的一种方法
    mysql开启慢查询日志以及查看(转载自网络)
    Best MVC Practices(最优的MVC布局)
    nginx虚拟机配置(支持php)
    一个简单大方的赞后+1,踩后-1js动画效果
    如何创建ajax对象?
    psd图片到html
    小知识
    sass入门
  • 原文地址:https://www.cnblogs.com/fripside/p/5495549.html
Copyright © 2020-2023  润新知