zoukankan      html  css  js  c++  java
  • hdu 1712 分组背包问题

    可能是自己的英语不好,一开始不能理解题目的意思,所以还是先讲一下题目的意思,现在acboy有m天的时间来修n门课程,然后给你一个矩阵,A[i][j]表示话J天的时间学习i门课程能够得到A[i][j],那么我们的任务就是把acboy所拥有的天数m天分成一些部分来学习这其中的课程,使得能够在学校课程当中收获最多。

    看过背包九讲的话,做这个就容易多了,其实就是简单的分组背包问题。

    View Code
     1  #include<iostream>
     2  #include<stdio.h>
     3  using namespace std;
     4  int dp[110],value[110][110];
     5  int main()
     6  {
     7     int n,m;
     8     while(scanf("%d%d",&m,&n)!=EOF&&m&&n)
     9     {
    10            for(int i=0;i<m;i++)
    11              for(int j=0;j<n;j++)
    12              scanf("%d",&value[i][j]);
    13            memset(dp,0,sizeof(dp));
    14            for(int i=0;i<m;i++)
    15               for(int j=n;j>=1;j--)
    16                   for(int k=1;k<=j;k++)
    17                   {
    18                       dp[j]=dp[j]>dp[j-k]+value[i][k-1]?dp[j]:dp[j-k]+value[i][k-1];
    19                  //     cout<<"现在在"<<i+1<<"组"<<endl;
    20                 //      cout<<"更新"<<j<<"  "<<dp[j]<<endl;
    21                  //     system("pause");
    22                   }
    23            printf("%d\n",dp[n]);       
    24     }
    25     return 0;    
    26  }
    27  
  • 相关阅读:
    一句sql语句删除重复记录
    Remoting测试
    关于委托
    遍历打印文件夹中的word文档
    c# string类型的一个理解误区
    viewstate
    依赖注入与工厂模式Demo
    memcache配置实践
    201732 C#链接数据库实现登陆
    观察者设计模式[伪]
  • 原文地址:https://www.cnblogs.com/nuoyan2010/p/2667092.html
Copyright © 2011-2022 走看看