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

poj1014 hdu1059 Dividing 多重背包

編輯:C++入門知識

有價值為1~6的寶物各num[i]個,求是否能分成價值相等的兩部分。


#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define inf 0x3f3f3f3f
#define ll long long
#define mod 1000000007
using namespace std;

int dp[120010],num[10],v;

void pack01(int c,int w)
{
    for(int i=v;i>=c;i--)
        dp[i]=max(dp[i],dp[i-c]+w);
}

void packall(int c,int w)
{
    for(int i=c;i<=v;i++)
        dp[i]=max(dp[i],dp[i-c]+w);
}

void mulpack(int c,int w,int n)
{
    if(c*n>=v)
        packall(c,w);
    else
    {
        int i=1;
        while(i

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