首页 > 其他分享 >322. 零钱兑换

322. 零钱兑换

时间:2023-05-30 13:55:57浏览次数:37  
标签:vector 硬币 int coins 322 零钱 amount 兑换 dp

给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。

计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。

你可以认为每种硬币的数量是无限的。


输入:coins = [1, 2, 5], amount = 11
输出:3 
解释:11 = 5 + 5 + 1

> 我的解法


class Solution {
public:
    int coinChange(vector<int>& coins, int amount) {
        vector<int> dp(amount+1,-1);
        dp[0] = 0;
        for(int i = 0;i < coins.size();i++){
            for(int j = coins[i];j <= amount;j++){
                if(dp[j - coins[i]] != -1){
                    if(dp[j] != -1){
                        dp[j] = min(dp[j],dp[j-coins[i]] + 1);
                    }
                    else{
                        dp[j] = dp[j - coins[i]] + 1;
                    }
                }
            }
        }
        return dp[amount];
    }
};

> 标准解法


class Solution {
public:
    int coinChange(vector<int>& coins, int amount) {
        vector<int> dp(amount + 1, INT_MAX);
        dp[0] = 0;
        for (int i = 0; i < coins.size(); i++) { // 遍历物品
            for (int j = coins[i]; j <= amount; j++) { // 遍历背包
                if (dp[j - coins[i]] != INT_MAX) { // 如果dp[j - coins[i]]是初始值则跳过
                    dp[j] = min(dp[j - coins[i]] + 1, dp[j]);
                }
            }
        }
        if (dp[amount] == INT_MAX) return -1;
        return dp[amount];
    }
};

标签:vector,硬币,int,coins,322,零钱,amount,兑换,dp
From: https://www.cnblogs.com/lihaoxiang/p/17443016.html

相关文章

  • 518.零钱兑换II
    给你一个整数数组coins表示不同面额的硬币,另给一个整数amount表示总金额。请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回0。假设每一种面额的硬币有无限个。题目数据保证结果符合32位带符号整数。输入:amount=5,coins=[1,2,......
  • 警钟长鸣-----找零钱
    蒟蒻的我在这个题上花了40分钟还超时了(悲不说了先上超时的代码:1#include<bits/stdc++.h>2usingnamespacestd;3intres,n,a[]={1,2,5,10,20,50,100},x;4voiddfs(intst,intnum,intid)5{6if(st==0){res++;return;}7if(st<0||num>100||id>6)r......
  • 322. Coin Change刷题笔记
    用自底向上的dp算法classSolution:defcoinChange(self,coins:List[int],amount:int)->int:dp=[0]+[float('inf')]*amountforiinrange(1,amount+1):forcoinincoins:ifi-coin>=0:......
  • 02.凑零钱问题
    先看下题目:给你k种面值的硬币,面值分别为c1,c2...ck,每种硬币的数量无限,再给一个总金额amount,问你最少需要几枚硬币凑出这个金额,如果不可能凑出,算法返回-1。算法的函数签名如下://coins中是可选硬币面值,amount是目标金额intcoinChange(int[]coins,intamount);1、......
  • 连续签到积分兑换试用流量主小程序开发
    每日签到积分兑换试用流量主小程序开发打卡兑奖小程序。用户签到活得积分。积分可以兑换商品。观看激励视频广告可以积分翻倍。用户可以参加试用商品活动参加试用需要提交信息。可以通过分享方式直接获取试用资格。以下是流量主小程序的功能列表:1.广告位管理:可以创建、编辑和删除......
  • day45| 70+322+279
    70.爬楼梯 题目简述:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 思路:1.要想爬到第n阶,必须先上第n-1阶或者n-2阶2.利用动态规划,定义初始条件dp[0]=1,dp[1]=23.有dp[i]=dp[i-1]+dp[i-2],其中i......
  • ASEMI代理ADUM3223ARZ-RL7原装ADI车规级ADUM3223ARZ-RL7
    编辑:llASEMI代理ADUM3223ARZ-RL7原装ADI车规级ADUM3223ARZ-RL7型号:ADUM3223ARZ-RL7品牌:ADI/亚德诺封装:SOIC-16批号:2023+安装类型:表面贴装型引脚数量:16工作温度:-40°C~125°C类型:车规级芯片ADUM3223ARZ-RL7特征4A峰值输出电流工作电压相对于输入的高侧或低侧:537V峰......
  • 7-010-(LeetCode- 322) 零钱兑换
    1.题目读题 考查点 2.解法思路 代码逻辑 具体实现113.总结......
  • 题解 P3225 [HNOI2012] 矿场搭建
    解析传送门一道简单的tarjan题题意:在无向图中找一些点,这些点组成的的点集记为\(V\),使得去掉任意一个点,剩下的每一个点都可以到达\(V\)中任意一个点,求点集\(V\)的大小的最小值及其方案数。去掉一个点,很自然的联想到割点,那么考虑一下割点在不在备选集合中。如图,显然可以看出,......
  • P5322 BJOI2019 排兵布阵
    P5322BJOI2019排兵布阵本题主要考察对模型的转化能力。首先要察觉两条性质:对于一个城堡,想打败一个玩家的同时用最少的士兵,肯定是正好派出这个玩家在这个城堡派出的士兵数量的二倍加一名士兵。在一个城堡上,打败了一个在这个城堡派出士兵数量为\(x\)的玩家,就可以顺便打败所......