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