题解 | #最小邮票数#

最小邮票数

https://www.nowcoder.com/practice/83800ae3292b4256b7349ded5f178dd1

#include<iostream>
#include<limits>
using namespace std;
#define INT_MAX 99999


int main() {
	int weight;
	while (cin>>weight) {
		int w[102],v[102];
		int N; cin >>N;
		for (int i = 0; i < N; i++) {
			cin >> w[i];
			v[i] =1;
		}
		int dp[102];
		dp[0] = 0;
		for (int i = 1; i <= weight; i++) {
			dp[i] = INT_MAX/10 ;
		}
		for (int i = 0; i < N; i++) {
			for (int j = weight; j >=w[i]; j--) {
				dp[j] = min(dp[j], dp[j - w[i]] + v[i]);
			}
		}
		if (dp[weight] == INT_MAX/10) 
		{
			cout << '0' << endl;
		}
		else {
			cout << dp[weight]<<endl;
		}
	}
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务