硬币问题
Posted shirlybaby
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了硬币问题相关的知识,希望对你有一定的参考价值。
无限硬币问题
#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; }
以上是关于硬币问题的主要内容,如果未能解决你的问题,请参考以下文章