程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU 4508 湫湫系列故事——減肥記I (2013騰訊編程馬拉松初賽第一場)

HDU 4508 湫湫系列故事——減肥記I (2013騰訊編程馬拉松初賽第一場)

編輯:C++入門知識

 

 

題目大意:

給定一些數據。

每組數據以一個整數n開始,表示每天的食物清單有n種食物。
接下來n行,每行兩個整數a和b,其中a表示這種食物可以帶給湫湫的幸福值(數值越大,越幸福),b表示湫湫吃這種食物會吸收的卡路裡量。
最後是一個整數m,表示湫湫一天吸收的卡路裡不能超過m。

思路:

完全背包。

一開始以為是01背包。

敲了01後樣例2不對啊!!!

然後改成完全就過了。。就改循環體就好了。。

 

#include
#include
#include
using namespace std;
const int MAXN=100000+10;
int w[MAXN],v[MAXN];
int dp[MAXN];
int main()
{
	int n,m;
	while(~scanf(%d,&n))
	{
		for(int i=1;i<=n;i++)
			scanf(%d%d,&v[i],&w[i]);
		scanf(%d,&m);
		
		memset(dp,0,sizeof(dp));
		
		for(int i=1;i<=n;i++)
		{
			for(int j=w[i];j<=m;j++)
			{
				dp[j]=max(dp[j],dp[j- w[i]] + v[i]);
			}
		}
		
		printf(%d
,dp[m]);
	}
	return 0;
}


 

 

 

 

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