動態規劃 01揹包 模板題

1414: 集裝箱裝載

時間限制: 1 Sec  內存限制: 128 MB
提交: 45  解決: 27
您該題的狀態:已完成
[提交][狀態][討論版]

題目描述

有一批共n個集裝箱要裝上艘載重量爲c的輪船,其中集裝箱i的重量爲wi。找出一種最優裝載方案,將輪船儘可能裝滿,即在裝載體積不受限制的情況下,將儘可能重的集裝箱裝上輪船。

輸入

第一行有2個正整數ncn是集裝箱數,c是輪船的載重量。第2行中有n個正整數,表示集裝箱的重量(0<n<10000,0<c<32767)。

輸出

計算出的最大裝載重量輸出。

樣例輸入

<span style="color:black">5 10
7 2 6 5 4</span>

樣例輸出

<span style="color:black">10</span>

提示

 

來源

動態規劃-揹包問題 

 

題目智能推薦

 01揹包問題

不得不說測試數據真水。

#include<iostream>
#include<cstring>
#include<algorithm> 
using namespace std;
int dp[10001][2770];
int a[10001];
int cmp(int x,int y)
{
	return x>y;
}
int main()
{
	
	int n,c;
	int i,j;
    scanf("%d %d",&n,&c);
    {
    	int max=0;
    	
    	memset(dp,0,sizeof(dp));
    	for(i=1;i<=n;i++)
    	{
    		scanf("%d",&a[i]);
    		
		}
    	sort(a+1,a+1+n,cmp);
    	for(i=1;i<=n;i++)
    	{
    		for(j=1;j<=c;j++)
    		{
    			dp[i][j]=dp[i-1][j];
    			if(a[i]<=j)
    			{
    				dp[i][j]=dp[i][j]>dp[i-1][j-a[i]]+a[i]?dp[i][j]:dp[i-1][j-a[i]]+a[i];
				}
				
			}
			
		}
		printf("%d\n",dp[n][c]);
	}
	return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章