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

rqnoj02 開心的金明(dp,01背包)

編輯:C++入門知識

 

 

 


[cpp] 
#include <cstdio>  
const int maxm = 30000 + 10; 
const int maxn =30; 
int v[maxn], p[maxn]; 
int dp[maxm] = {0}; 
int main() 

    int n, m; 
    int i, j; 
    scanf("%d%d", &n, &m); 
    for (i = 0; i < m; i++) 
        scanf("%d%d", &v[i], &p[i]); 
    for (i = 0; i < m; i++) 
        for (j = n; j >= v[i]; j--) 
            if (dp[j - v[i]] + v[i] * p[i] > dp[j]) 
                dp[j] = dp[j - v[i]] + v[i] * p[i]; 
    printf("%d\n", dp[n]); 
    return 0; 

#include <cstdio>
const int maxm = 30000 + 10;
const int maxn =30;
int v[maxn], p[maxn];
int dp[maxm] = {0};
int main()
{
 int n, m;
 int i, j;
 scanf("%d%d", &n, &m);
 for (i = 0; i < m; i++)
  scanf("%d%d", &v[i], &p[i]);
 for (i = 0; i < m; i++)
  for (j = n; j >= v[i]; j--)
   if (dp[j - v[i]] + v[i] * p[i] > dp[j])
    dp[j] = dp[j - v[i]] + v[i] * p[i];
 printf("%d\n", dp[n]);
 return 0;
}

 

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