题解 | #最小邮票数#

最小邮票数

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

#include <bits/stdc++.h>

using namespace std;

const int N = 1010;

int w[N]; // 价格 
int f[N][N]; // 前i张邮票凑成j分的最小张数
// f[0-n][0] = 0;
// f[0][1-m]
 
int main(){
	
	int m; //总值
	int n; // 邮票数

	cin >> m >> n;
	memset(f, 0x3f, sizeof(f));
	for (int i=1; i<=n; i++){
		cin >> w[i];
	}
	for (int i=0; i<=n; i++){
		f[i][0] = 0;
	}
	for (int i=1; i<=n; i++){
		for (int j=1; j<=m; j++){
			if (j < w[i]){
				f[i][j] = f[i-1][j];
			}
			else{
				f[i][j] = min(f[i-1][j], f[i-1][j-w[i]] + 1);
			}
		}
	}
		
	if (f[n][m] == 0x3f3f3f3f){
        // puts("0");
        puts("0");
       }
    else{
        printf("%d\n", f[n][m]);
    }

	return 0;
} 

全部评论

相关推荐

年纪大的小汤姆:哥们你是不是真和这人有仇😨
点赞 评论 收藏
分享
09-14 17:23
门头沟学院
故事和酒66:所以说副业很重要,程序员干到40岁,再怎么也赚300万了,吃吃利息也够活下去
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务