码迷,mamicode.com
首页 > 其他好文 > 详细

硬币问题

时间:2020-03-11 21:01:37      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:无限   typedef   ret   cst   cstring   lse   div   vector   using   

无限硬币问题

#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<stack>
#include<cstdio>
#include<queue>
#include<map>
#include<vector>
#include<set>
using namespace std;
const int maxn=1010;
const int INF=0x3fffffff;
typedef long long LL;
LL a[210];
int n,m;
//无限硬币问题 
int b[100001];
int main(){
	cin>>n>>m;
	for(int i=0;i<n;i++) cin>>a[i];
	for(int i=1;i<=m;i++) b[i]=INF;
	b[0]=0; 
	for(int i=0;i<n;i++){
		for(int j=a[i];j<=m;j++){
			b[j]=min(b[j],b[j-a[i]]+1);
		}
	}
	for(int i=1;i<=m;i++) cout<<b[i]<<endl;
return 0;
}

有限硬币问题

#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<stack>
#include<cstdio>
#include<queue>
#include<map>
#include<vector>
#include<set>
using namespace std;
const int maxn=1010;
const int INF=0x3fffffff;
typedef long long LL;
//有限硬币问题
int num[110];
int val[110];
int b[10001];
int n,m; 
int main(){
	cin>>n>>m;
	for(int i=0;i<n;i++) cin>>val[i];
	for(int i=0;i<n;i++) cin>>num[i];
	for(int i=1;i<=m;i++) b[i]=INF;
	b[0]=0;
	for(int i=0;i<n;i++){
		for(int j=1;j<=num[i];j++){
			for(int z=m;z>=val[i];z--){
				b[z]=min(b[z],b[z-val[i]]+1);
			}
		}
	}
	for(int i=1;i<=m;i++) {
		if(b[i]==INF) cout<<"-1"<<endl;
		else cout<<b[i]<<endl;
		} 
return 0;
}

  

硬币问题

标签:无限   typedef   ret   cst   cstring   lse   div   vector   using   

原文地址:https://www.cnblogs.com/shirlybaby/p/12465275.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!