poj 1742(Coins)
View Code
#include<iostream> #include<stdio.h> #include<string.h> using namespace std; int val[110],cnt[110],b[100010],use[100010]; int main() { int n,m; while(scanf("%d%d",&n,&m)) { memset(b,0,sizeof(b)); if(n==0&&m==0)break; for(int i=1;i<=n;i++) scanf("%d",&val[i]); for(int i=1;i<=n;i++) scanf("%d",&cnt[i]); int sum=0; b[0]=1; for(int i=1;i<=n;i++) { memset(use,0,sizeof(use)); for(int j=val[i];j<=m;j++) { if(!b[j]&&b[j-val[i]]&&use[j-val[i]]<cnt[i]) { b[j]=1; use[j]=use[j-val[i]]+1; sum++; } } } //for(int i=1;i<=m;i++) //cout<<b[i]<<" "; printf("%d\n",sum); } return 0; }