zoukankan      html  css  js  c++  java
  • leetcode 322: Coin Change

    You are given coins of different denominations and a total amount of money amount. Write a function to compute the fewest number of coins that you need to make up that amount. If that amount of money cannot be made up by any combination of the coins, return -1.

    Example 1:
    coins = [1, 2, 5], amount = 11
    return 3 (11 = 5 + 5 + 1)

    Example 2:
    coins = [2], amount = 3
    return -1.

    Note:
    You may assume that you have an infinite number of each kind of coin.

    题意:所需硬币的最小数目

    思路:

    例:coins = [1,2,5],amount = 11

    则所需硬币数ans[11] = min(ans[11-1], ans[11-2], ans[11-5]);

    注意初始状态为-1,即不存在;

     1 class Solution {
     2 public:
     3     int coinChange(vector<int>& coins, int amount) {
     4         if(amount==0)
     5             return 0;
     6         int len = coins.size();
     7         vector<int> v(amount+1,-1);
     8         v[0] = 0;
     9         for(int i=1;i<=amount;i++)
    10         {
    11             for(int j=0;j<len;j++)
    12             {
    13                 int tmp = i-coins[j];
    14                 if(tmp<0)
    15                     continue;
    16                 if(v[tmp]==-1)
    17                     continue;
    18                 if(v[i]==-1)
    19                     v[i] = v[tmp]+1;
    20                 else
    21                     v[i] = min(v[i],v[tmp]+1);
    22             }
    23         }
    24         return v[amount];
    25     }
    26 
    27 };
    View Code
  • 相关阅读:
    数据库外键约束
    mysql查询数据
    操作mysql操作数据库
    自定义标签
    jstl标签
    getattibute 与 getparameter区别
    2017.3.2
    java中静态,抽象,接口,继承总结
    关于使用css伪类实现小图标
    动态生成的dom元素绑定事件
  • 原文地址:https://www.cnblogs.com/jsir2016bky/p/5781914.html
Copyright © 2011-2022 走看看