POJ-1742Coins

代码:

#include<iostream>
#include<stdio.h>
#include<string.h> 
using namespace std;
const int maxn = 1e5+10;
int dp[maxn];
int sum[maxn];
int main(){
    int n,m;
    while(cin>>n>>m&&n&&m){
        int a[n+1],c[n+1];
        for(int i=1;i<=n;i++)
            scanf("%d",&a[i]);
        for(int i=1;i<=n;i++)
            scanf("%d",&c[i]);
        memset(dp,0,sizeof(dp));
        dp[0]=1;
        int ans = 0;
        for(int i=1;i<=n;i++){
            memset(sum,0,sizeof(sum));
            for(int j=a[i];j<=m;j++){
                if(!dp[j]&&dp[j-a[i]]&&(sum[j-a[i]]<c[i])){
                    dp[j] = 1;
                    sum[j] = sum[j-a[i]]+1;
                    ans++;
                }
            }
        }
        cout<<ans<<endl;
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/lusiqi/p/12341384.html