POJ 1742

#include <iostream>
#define MAXN 105 
using namespace std;

struct node
{
    int a;
    int c;
};

node _node[MAXN];
int sum[100001];
bool mark[100001];

int main()
{
    //freopen("acm.acm","r",stdin);
    int i;
    int j;
    int n;
    int m;
    while(cin>>n>>m)
    {
        if(n == 0 && m == 0)
        {
            break;
        }
        for(i = 0; i < n; ++ i)
        {
            cin>>_node[i].a;
        }
        for(i = 0; i < n; ++ i)
        {
            cin>>_node[i].c;
        }
        int ans = 0;
        memset(mark,false,sizeof(mark));
        mark[0] = true;
        for(i = 0; i < n; ++ i)
        {
            memset(sum,0,sizeof(sum));
            for(j = _node[i].a; j <= m; ++ j)
            {
                if(!mark[j] && mark[j-_node[i].a] && sum[j-_node[i].a] < _node[i].c)
                {
                    mark[j] = true;
                    sum[j] =  sum[j-_node[i].a] + 1;
                    ++ ans;
                }
            }
        }
        cout<<ans<<endl;
    }
}

关注我的公众号,当然,如果你对Java, Scala, Python等技术经验,以及编程日记,感兴趣的话。 

技术网站地址: vmfor.com

原文地址:https://www.cnblogs.com/gavinsp/p/4566541.html