返回题解分享
讨论 / 题解分享/ 帖子详情

纸币问题 - 题解

#include<bits/stdc++.h>
using namespace std;
int dp[100001],n,a[101010],cost,w;
int main(){
	cin>>n>>w;
	for(int i = 1; i <= n; i++) cin >> a[i];
	for(int i = 1;i <= w;i++){
		cost = 0x3f3f3f3f;
		for(int j = 1; j <= n; j++){
           //特判一下,防止RE
		    if(i - a[j] >= 0) cost = min(cost, dp[i - a[j]]);
           //求之前用的纸币数最小值
		}
		dp[i] = cost + 1;//加一是这次会多用1张纸币
	} 
	cout << dp[w];
	return 0;
}
0 回复 0 转发 0 喜欢 3 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!