当前位置: 首页 > 工具软件 > bcoin > 使用案例 >

coin change

凌恩
2023-12-01
#include <iostream>
#include <unordered_map>
#include <vector>
#include <algorithm>
using namespace std;

struct cmp {
    bool operator()(const int& a, const int& b) {
        return a > b;
    }

};

void dfs(vector<vector<int>> &ans, vector<int> &coins, vector<int> &comb, int target, int tmp) {
    if (tmp > target) {
        return;
    }
    sort(coins.begin(), coins.end(), cmp());
    if (tmp == target) {
        ans.push_back(comb);
        return;
    }

    for (int coin: coins) {
        comb.push_back(coin);
        dfs(ans, coins, comb, target, tmp + coin);
        comb.pop_back();
    }
}

int main() {
    vector<vector<int>> ans;
    vector<int> coins{1, 2, 5};
    vector<int> comb;
    int target = 15;
    int tmp = 0;
    dfs(ans, coins, comb, target, tmp);
    cout << ans.size() << endl;
    int min_num = 15;
    for (vector<int> x: ans) {
        min_num = x.size() < min_num ? x.size() : min_num;
        for (int y: x) {
            cout << y << "\t";
        }
        cout << endl;
    }
    cout << min_num << endl;
}
 类似资料:

相关阅读

相关文章

相关问答