标签:无限 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