杭电1171 Big Event in HDU

来源:互联网 发布:手机尤克里里调音软件 编辑:程序博客网 时间:2024/05/16 10:23

Big Event in HDU

题目链接:Big Event in HDU —1171
这道题目直接用母函数做,大家如果不了解母函数的可以自己百度一下,由于题目比较简单,这里就直接贴代码哈.如果大家有什么问题,可以在下面回复,我会马上为你解答。
代码如下:

#include <iostream>using namespace std;int extra[100],Res[300000]; struct {    int V;    int M;}res[50];int main(){    int  N,sum;    while(scanf_s("%d",&N) &&N>0&&N<=50){    sum=0;    for(int i=0;i<N;i++){        cin>>res[i].V>>res[i].M;        sum+=res[i].V*res[i].M;    }    memset(Res,0,sizeof(Res));        for(int i=0;i<N;i++)        {            memset(extra,0,sizeof(extra));            for(int j=1;j<=res[i].M;j++)                extra[j]=res[i].V*j;            for(int k=0;k<=res[i].M;k++)                for(int x=0;x<=sum;x++)                    Res[extra[k]+Res[x]]=extra[k]+Res[x];        }        int n,i,min=300000,flag;        for(i=0;i<=sum;i++){            if(Res[i]==0)                continue;            n=sum-Res[i];            n=Res[i]-n;            if(n>=0 && n<min){                min=n;                flag=i;            }        }        cout<<Res[flag]<<" "<<sum-Res[flag]<<endl;    }    return 0;}

“`

0 0
原创粉丝点击