SZ#G6KP13. 【GESP强化 六级】最少硬币

提交1 通过1
通过率100%
时间限制2000ms
内存限制256MiB
    ID: 11557 传统题 2000ms 256MiB 尝试: 1 已通过: 1 难度: 入门 上传者: 标签>GESPGESP强化C++c++编程题背包问题完全背包最少硬币1星

题目描述

有一个包含 nn 种硬币的货币系统,每种硬币都有一个正整数面值,并且每种硬币都可以使用任意多枚。你的任务是用这些硬币凑出金额 xx,同时使使用的硬币数量尽可能少。

例如,硬币面值为 {1,5,7}\{1,5,7\},目标金额为 1111 时,一种最优方案是 5+5+15+5+1,共使用 33 枚硬币。

输入格式

第一行包含两个整数 n,xn,x,分别表示硬币种类数和目标金额。

第二行包含 nn 个互不相同的整数 c1,c2,,cnc_1,c_2,\ldots,c_n,表示各种硬币的面值。

输出格式

输出一个整数,表示凑出金额 xx 所需的最少硬币数;如果无法凑出,输出 1-1

3 11
1 5 7
3
2 13
47 52
-1
3 16
60 34 62
-1

说明/提示

数据范围与约定

  • 1n1001\le n\le100
  • 1x1061\le x\le10^6
  • 1ci1061\le c_i\le10^6