zoukankan      html  css  js  c++  java
  • [hdu1712]ACboy needs your help分组背包

    题意:一共$m$天,$n$门课程,每门课程花费$i$天得到$j$的价值,求最后获得的最大价值

    解题关键:分组背包练习,注意循环的顺序不能颠倒

    伪代码:

    $for$ 所有的组$k$
       $for{ m{ }}v = V..0$
            $for$ 所有的$i$属于组$k$
               $f[v] = max (f[v],f[v - c[i]] + w[i])$

    背包问题本质上就是一种线性规划问题。

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 int arr[200][200];
     5 int dp[200];
     6 int main(){
     7     int n,m;
     8     ios::sync_with_stdio(0);
     9     while(cin>>n>>m&&(n||m)){
    10         memset(dp,0,sizeof dp);
    11         for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>arr[i][j];
    12         for(int i=1;i<=n;i++){
    13             for(int j=m;j>=0;j--){
    14                 for(int k=1;k<=j;k++){
    15                     dp[j]=max(dp[j],dp[j-k]+arr[i][k]);
    16                 }
    17             }
    18         }
    19         cout<<dp[m]<<"
    ";
    20     }
    21     return 0;
    22 }
  • 相关阅读:
    Java——IO输入/输出
    高级查询---嵌套and分页
    Spring mvc拦截器
    SpringMVC实现文件下载
    SpringMVC是实现文件上传
    初始化参数绑定(日期)
    数据校验
    Web Service
    可以用代码发邮件了哦
    JavaMail和James
  • 原文地址:https://www.cnblogs.com/elpsycongroo/p/7407416.html
Copyright © 2011-2022 走看看