杭电4501

#include<iostream>
using namespace std;
#define Max(a,b)(a>b?a:b)
int arry[101][1001][6];
int as[101], bs[101],cs[101];
int main()
{
    int n,v1,v2,k;
    while(cin>>n>>v1>>v2>>k)
    {
        memset(as,0,sizeof(as));
        memset(bs,0,sizeof(bs));
        memset(cs,0,sizeof(cs));
        memset(arry,0,sizeof(arry));
        for(int i=0;i<n;i++)
            cin>>as[i]>>bs[i]>>cs[i];
        for(int i=0;i<n;i++)
            for(int ii=v1;ii>=0;ii--)
                for(int jj=v2;jj>=0;jj--)
                    for(int kk=k;kk>=0;kk--)
                    {
                        int temp=0;
                        if(ii>=as[i])
                            temp=max(temp,arry[ii-as[i]][jj][kk]+cs[i]);
                        if(jj>=bs[i])
                            temp=max(temp,arry[ii][jj-bs[i]][kk]+cs[i]);
                        if(kk>=1)
                            temp=max(temp,arry[ii][jj][kk-1]+cs[i]);
                        arry[ii][jj][kk]=max(temp,arry[ii][jj][kk]);
                    }
        cout<<arry[v1][v2][k]<<endl;
    }
    return 0;
}

 

posted @ 2013-04-10 13:26  无名127  阅读(155)  评论(0编辑  收藏  举报