1720: 最少硬币问题
题目描述
输入
输出
样例输入
3 1 3 2 3 5 3 18
样例输出
5
#include<stdio.h> #define MAX 1000000 int t[MAX], coins[MAX], f[MAX]; int min(int a, int b) { return (a < b ? a : b); } int main() { int n, m, i, j, k; scanf("%d", &n); for(i = 0; i < n; ++i) { scanf("%d %d", &t[i], &coins[i]); } scanf("%d", &m); for(i = 1; i <= m; ++i) f[i] = MAX; for(i = 0; i < n; ++i) for(j = 0; j < coins[i]; ++j) for(k = m; k >= t[i]; --k) f[k] = min(f[k], f[k - t[i]] + 1); printf("%d\n", f[m] <= m ? f[m] : -1); return 0; }