首页 > 其他分享 >兑换零钱-简单背包问题

兑换零钱-简单背包问题

时间:2022-12-29 22:00:44浏览次数:83  
标签:arr 背包 int aim 零钱 兑换 整型 货币 dp

题目

题目链接
给定数组arr,arr中所有的值都为正整数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个aim,代表要找的钱数,求组成aim的最少货币数。
如果无解,请返回-1.

例子:
输入:[5,2,3],20
输出: 4

分析

这是一个典型的背包问题,目标是让 货币数最少, arr中的数字至少为1, 最坏情况下需要aim 张1元的货币。
然后看字问题,用dp[i] 表示i元目标最少需要的货币数,那么dp[i] = min(dp[i], dp[i-arr[j]] + 1)。i肯定是从一块一块地来的,所以需要一层循环,同时需要结合数组,所以需要另一层循环。

代码实现

import java.util.*;


public class Solution {
    /**
     * 最少货币数
     * @param arr int整型一维数组 the array
     * @param aim int整型 the target
     * @return int整型
     */
    public int minMoney (int[] arr, int aim) {
        // write code here
        if(aim <1) return 0;
        if(arr.length == 0) return -1;
        int[]dp = new int[aim+1];
        Arrays.fill(dp, aim+1);
        dp[0] = 0;
        // dp[i] = min(dp[i], dp[i-arr[j] + 1])
        for(int i = 1;i <= aim; i++) 
         for(int j = 0;j< arr.length; j++) {
            if(arr[j] <= i) {
                dp[i] = Math.min(dp[i], dp[i-arr[j]] + 1);
            }
         }
         return dp[aim] > aim? -1: dp[aim];
    }
}

标签:arr,背包,int,aim,零钱,兑换,整型,货币,dp
From: https://www.cnblogs.com/happy-to-study/p/17013638.html

相关文章

  • 背包九讲
    更新说明:时间更新内容2022年9月15日09点39分01背包问题2022年9月15日10点56分完全背包问题1.01背包更舒适的阅读有N件物品和一个容量是V的背包......
  • P1858 多人背包
    P1858多人背包题意:一共有\(K\)个人,每个人的背包容量相同都为\(V\),一共有\(N\)种物品,每个人每种物品都最多选一个。要求每个人的选的物品总体积必须等于背包的体......
  • 动态规划-背包问题
    01背包问题问题描述:有N件物品和一个容量是V的背包。每件物品只能使用一次。第i件物品的体积是vi,价值是wi,求解将哪些物品装入背包,可使这些物品的总体积不超过......
  • 01背包问题中滚动数组的理解
     时间:2022/12/28 问题:背包的最大重量为4。每个物品只有一个,物品重量及价值如下所示: 重量价值物品0115物品1320物品2430问背包能背的物......
  • 多重背包.
    题目描述给有一个能承重V的背包,和n种物品,每种物品的数量有限多,我们用重量、价值和数量的三元组来表示一个物品,第i件物品表示为(Vi,Wi,Si),问在背包不超重的情况下,得到物品的......
  • 微信支付商家付款(转账)到零钱
    zoujingli/WeChatDeveloper支持微信支付v3版的部分接口,包含转账到零钱。测试用了没问题。如果要查询转账的状态,那么可以用“查询转账批次单”和“查询转账明细单”的接......
  • 代码随想录 - 背包问题
    vector<int>weight={1,3,4};vector<int>value={15,20,30};intbagWeight=4;//01背包如果先遍历背包后遍历物品那就是每个包只会装一......
  • AcWing.7 混合背包问题
    题目描述有\(N\)种物品和一个容量是\(V\)的背包。物品一共有三类:第一类物品只能用1次(01背包);第二类物品可以用无限次(完全背包);第三类物品最多只能用\(s_i\)次(多......
  • 背包模型
    背包模型概述​最长上升子序列:序列DP(相邻两个被选择的有关系)背包问题:组合DP,在全局的考虑之下最小f[i][j]:i表示搞了多少,j表示限制集合:所有仅仅从前i个物品当中选......
  • Acwing 12. 背包问题求具体方案
    Acwing12.背包问题求具体方案01背包问题,但是要求输出字典序最小的方案数。思路:状态转移方程:\(f[i][j]=max(f[i-1][j],f[i-1][j-v[i]]+w[i])\)求具体......