hdu 3496 Watch The Movie(分组背包)

来源:互联网 发布:c语言 true false 编辑:程序博客网 时间:2024/06/02 07:29

整天在机房写代码,偶尔确实容易脑子缺氧。一直没有注意到,如果电影看不完就输出0。。。。

#include<stdio.h>#include<string.h>#define N 105int dp[N][N*10];int a[N],b[N];int Max(int x,int y){    if(x>y)        return x;    else        return y;}int main(){    int T;    scanf("%d",&T);    while(T--)    {        int n,m,l;        scanf("%d%d%d",&n,&m,&l);        int i,j,k;        for(i=1;i<=n;i++)            scanf("%d%d",&a[i],&b[i]);        memset(dp,-1,sizeof(dp));        for(i=0;i<=l;i++)            dp[0][i]=0;        for(i=1;i<=n;i++)        {            for(j=m;j>=1;j--)            {                for(k=l;k>=a[i];k--)                {                    if(dp[j-1][k-a[i]]!=-1)                    {                        dp[j][k]=Max(dp[j-1][k-a[i]]+b[i],dp[j][k]);                    }                }            }        }        if(dp[m][l]!=-1)            printf("%d\n",dp[m][l]);        else            printf("0\n");    }    return 0;}


原创粉丝点击