• HDUOJ--2079选课时间(题目已修改,注意读题)


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

    Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 2254    Accepted Submission(s): 1791


    Problem Description
    又到了选课的时间了,xhd看着选课表发呆,为了想让下一学期好过点,他想知道学n个学分共有多少组合。你来帮帮他吧。(xhd认为一样学分的课没区别)
     
    Input
    输入数据的第一行是一个数据T,表示有T组数据。
    每组数据的第一行是两个整数n(1 <= n <= 40),k(1 <= k <= 8)。
    接着有k行,每行有两个整数a(1 <= a <= 8),b(1 <= b <= 10),表示学分为a的课有b门。
     
    Output
    对于每组输入数据,输出一个整数,表示学n个学分的组合数。
     
    Sample Input
    2
    2 2
    1 2
    2 1
    40 8
    1 1
    2 2
    3 2
    4 2
    5 8
    6 9
    7 6
    8 8
     
    Sample Output
    2
    445
    Author
    xhd
     
    Source
     
    母函数...给出value,num,求某一value的组合值....
    代码:
     1 #include<iostream>
     2 #include<vector>
     3 using namespace std;
     4 
     5 typedef struct Grade
     6 {
     7     int value;
     8     int num;
     9 }grade;
    10 int main()
    11 {
    12     int t,k,n,i,j,m;
    13     cin>>t;
    14     while(t--)
    15     {
    16         cin>>n>>k;
    17         vector<grade>a(k);
    18         vector<int>c1(n+1,0);
    19         vector<int>c2(n+1,0);
    20         for(i=0;i<k;i++)
    21             cin>>a[i].value>>a[i].num;
    22         for(i=0;i*a[0].value<=n&&i<=a[0].num;i++)
    23         {
    24           c1[i*a[0].value]=1;
    25         }
    26         for(i=1;i<k;i++)
    27         {
    28             for(j=0;j<=n;j++)
    29             {
    30                 for(m=0 ; m*a[i].value+j<=n&&m<=a[i].num ; m++ ) 
    31                 {
    32                  c2[j+m*a[i].value]+=c1[j];
    33                 }
    34             }
    35             for(j=0;j<=n;j++)
    36             {
    37                 c1[j]=c2[j];
    38                 c2[j]=0;
    39             }
    40         }
    41         cout<<c1[n]<<endl;
    42     }
    43     return 0;
    44 }
    View Code
  • 相关阅读:
    Jsp自学2
    Jsp自学1
    .NET资源泄露与处理方案
    版本控制简介和工具
    中文操作
    获取windows操作系统所有用户
    .NET单例模式快速学习应用
    .NET多线程知识快速学习
    安装&卸载Windows服务
    扫雷小游戏-纯网页版
  • 原文地址:https://www.cnblogs.com/gongxijun/p/3235918.html
Copyright © 2020-2023  润新知