洛谷博客食用更佳(^-^)V:传送门
Description
输入硬币的n种不同面值(各种面值的硬币个数不限)和m。
输出构成1到m元的最少硬币数。
Input
第一行两个数n(n<=200),m(m<=10000)
第二行n个面值
Output
共m行,每行为组成该值所需最少硬币数(若不能组成则输出-1)
Sample Input
3 4
1 2 3
Sample Output
1
1
1
2
我太菜了,又来水DP基础题QAQ
这是一道DP的water problem
是美妙的背包啊~
一:状态与定义
f[i]表示凑齐i元所需的最少硬币数。
二:状态转移
当我们并没有计算过当前的硬币数时,用(i-a[j])元时的硬币数+1(这个1就是减的那一个硬币值a[j])。
而当我们已有了一个当前最小硬币数时,则将其与上一阶段最小硬币数小比较,取min。
具体的公式如下:
f ( x ) = { f [ i − a [ j ] ] + 1 f [ i ] = = 0 m i n ( f [ i