码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 1712 分组背包

时间:2015-03-08 23:06:28      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:分组背包   dp   

背景:1Y,01背包多加了一个挑选循环而已。

分组背包的典型描述:对于很多背包,把它分为k个组,每个组内的组员是相互冲突的,所以只能选择一个。

我的代码:

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;

int main(void){
    int n,m;
    while(scanf("%d%d",&n,&m),n*n+m*m){
        int c[n][m],F[101];
        memset(F,0,sizeof(F));
        for(int i=0;i < n;i++)
            for(int j=0;j < m;j++)
                scanf("%d",&c[i][j]);
        for(int i=0;i < n;i++){
            for(int j=m;j >= 1;j--){
                for(int k=0;k < m;k++){
                    if(k+1 <= j) F[j]=max(F[j],F[j-k-1]+c[i][k]);
                }
            }
        }
        printf("%d\n",F[m]);
    }
    return 0;
}


hdu 1712 分组背包

标签:分组背包   dp   

原文地址:http://blog.csdn.net/jibancanyang/article/details/44138747

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!