3 条题解

  • 0
    @ 2024-8-27 17:42:01
    #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;
    }
    

    信息

    ID
    114
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    253
    已通过
    59
    上传者