程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> hdu 1712 分組背包

hdu 1712 分組背包

編輯:關於C++

背景:1Y,01背包多加了一個挑選循環而已。

分組背包的典型描述:對於很多背包,把它分為k個組,每個組內的組員是相互沖突的,所以只能選擇一個。

我的代碼:

#include
#include
#include
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;
}


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved