zoukankan      html  css  js  c++  java
  • 选课时间

    此博客链接:https://www.cnblogs.com/ping2yingshi/p/12380402.html

    选课时间(150min)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2079

    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
    题解:
             方法:动态规划的背包问题。
             思路:今天看了01背包问题,目前这题还是不太理解。代码页没有通过。
    代码如下:
    #include<stdio.h>
    #include<math.h>
    #include<stdlib.h>
    #include<string.h>
    int main()
    {
        int T;
        while (~scanf_s("%d",&T))
        {
            int n, k;
            int a[9];
            int b[11];
            int c[40] = { 0 };
            memset(c, 0, sizeof(c));
            scanf_s("%d %d", &n,&k);//输入总分n,数量k
            for (int i=1;i<=k;i++)//读取学分a数量b
            {
                    scanf_s("%d", &a[i]);
                    scanf_s("%d", &b[i]);
            }
            c[0] = 1;
            for (int i = 1; i <= k; i++)
            {//
    
                for (int j = n; j >= a[i]; j--) {//分数
                    {
                        for (int l = 1; l <=b[i]; l++)//数量
                        {
    
                            if (j - a[i] * l >= 0)
                            {
                                c[j] = c[j] + c[j - a[i] * l];
    
                            }
                            else
                                break;
                        }
                    }
                }
            }
            printf("%d
    ", c[n]);
            T--;
        }
        return 0;
    }

    明天继续完成。

     
  • 相关阅读:
    订单模块
    69.Sqrt(x)
    28.Implement strStr()---kmp
    26.Remove Duplicates from Sorted Array
    27.Remove Element---两指针
    支付模块
    Oracle维护:每天的工作
    Oracle Hint
    latch相关视图整理
    oracle常用视图介绍
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/12380402.html
Copyright © 2011-2022 走看看