zoukankan      html  css  js  c++  java
  • [LintCode 90.] k数和 II

    90. k数和 II

    问题描述

    给定n个不同的正整数,整数k(1<= k <= n)以及一个目标数字。    

    在这n个数里面找出K个数,使得这K个数的和等于目标数字,你需要找出所有满足要求的方案。

    样例
    样例 1:

    输入: [1,2,3,4], k = 2, target = 5
    输出: [[1,4],[2,3]]
    样例 2:

    输入: [1,3,4,6], k = 3, target = 8
    输出: [[1,3,4]]

    解题思路

    DFS。类似八皇后问题,枚举每个位置可能放置的数字即可。需要注意的是结束条件的判断。

    补充样例

    注意数字不够k个就target==0的情况:

    [1,3,6,9,10,13,16,17]
    3
    33

    参考代码

    class Solution {
    public:
        /*
         * @param A: an integer array
         * @param k: a postive integer <= length(A)
         * @param target: an integer
         * @return: A list of lists of integer
         */
        vector<vector<int>> kSumII(vector<int> &A, int k, int target) {
            // write your code here
            vector<vector<int>> res;
            vector<int> v;
            dfs(res, v, A, 0, k, target);
            return res;
        }
        static void dfs(vector<vector<int>>& res, vector<int>& v, vector<int>& A, int start, int k, int target) {
            if (k == 0 && target == 0) {
                res.push_back(v);
                return;
            }
            if (k <= 0) return;
            for (int i=start; i<A.size(); i++) {
                v.push_back(A[i]);
                dfs(res, v, A, i+1, k-1, target-A[i]);
                v.pop_back();
            }
        }
    };
    
  • 相关阅读:
    twemproxy配置
    tomcat远程调试
    hadoop配置
    kafka原理分析
    hive-sql
    P1983 车站分级
    拓扑排序
    洛谷P1982 小朋友的数字
    字典树Trie
    城市交通费
  • 原文地址:https://www.cnblogs.com/zhcpku/p/14264605.html
Copyright © 2011-2022 走看看