C言語のネットワーク:質問1660:[ブルーブリッジカップ] [アルゴリズムのトレーニングVIP]問題をパッキング

1660は、質問:問題をパッキング[ブルーブリッジカップ] [アルゴリズムのトレーニングVIP]

制限時間:1秒メモリ制限:128メガバイト提出:150は解決:75

タイトル説明

ボックスは、容量V(正の整数、0 <= V <= 20000を有する )、 N項目(0 <N <= 30)があるが 、 各項目は、ボリューム(正の整数)を有しています。 
n個のアイテムの残りの空間要件ボックスが最小化されるように、ボックスに番号のいずれかを取ります。 

エントリー

最初の整数を行い、箱の容量を示し、 
第二行整数、それはN項目があることを示し、 
次のn行、各行は、n個のアイテムのそれぞれの整数の体積を表します。 

輸出

箱の残りの空間を表す整数。 

サンプル入力

24 
6 
8 
3 
12 
7 
9 
7 

サンプル出力

0

 

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int dp[20009];
int main(void){
	int v,n;
	int a[109];	
	scanf("%d%d",&v,&n);
	for( int i=1;i<=n;i++)
	     scanf("%d",&a[i]); 
	for( int i=1;i<=n;i++){
		 for( int j =v ;j>= a[i];j-- ){
		 	  dp[j] = max( dp[j] , dp[j-a[i]] +a[i]);
		 }
	}
	cout<<v - dp[v]<<endl;
	return 0;
}

 

公開された736元の記事 ウォンの賞賛123 ・は 80000 +を見て

おすすめ

転載: blog.csdn.net/S_999999/article/details/103341443
おすすめ