杭电 2079 选课时间(题目已修改,注意读题)

和找单词做了类似的处理,总之还是套模板。

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

int main()

{

    int t,n,k,a[10],b[12];

    int c1[1000],c2[1000];

    scanf("%d",&t);

    while(t--)

    {

        scanf("%d%d",&n,&k);

        for(int i=1;i<=k;i++)

        {

            scanf("%d%d",&a[i],&b[i]);

        }

        memset(c1,0,sizeof(c1));

        memset(c2,0,sizeof(c2));

        c1[0]=1;

        for(int i=1;i<=k;i++)

        {

            for(int j=0;j<=n;j++)

            {

                for(int k=0;j+k<=n&&k<=a[i]*b[i];k+=a[i])

                {

                    c2[j+k]+=c1[j];

                }

            }

            for(int i=0;i<=n;i++)

            {

                c1[i]=c2[i];

                c2[i]=0;

            }

        }

        printf("%d\n",c1[n]);

    }

   // system("pause");

    return 0;

}

你可能感兴趣的:(时间)