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

HDU 1712 ACboy needs your help (分組背包問題)

編輯:C++入門知識

HDU 1712 ACboy needs your help (分組背包問題)


有n門課程,和m天時間,完成a[i][j]得到的價值為第i行j列的數字,求最大價值......

 

看過背包九講的話,做這個就容易多了,其實就是簡單的分組背包問題。

 

#include 
#include 

using namespace std;

int A[105][105];
int dp[105];

int main()
{
    int n, m;
    while(cin>>n>>m&&n+m)
    {
        int i, j;
        memset(dp, 0, sizeof(dp));

        for(i=1; i<=n; ++i)
            for(j=1; j<=m; ++j)
                cin>>A[i][j];
        for(i=1; i<=n; ++i)
        {
            for(j=m; j>0; --j)
            {
                for(int k=1; k<=j; ++k)
                {
                    dp[j]=max(dp[j],dp[j-k]+A[i][k]);
                }
            }
        }
        cout<

 

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