| 比赛 | 
    15级练手赛 | 
    评测结果 | 
    AAAAA | 
    | 题目名称 | 
    装箱问题 | 
    最终得分 | 
    100 | 
    | 用户昵称 | 
    瑆の時間~無盡輪迴·林蔭 | 
    运行时间 | 
    0.024 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    5.40 MiB  | 
    | 提交时间 | 
    2018-08-02 19:20:19 | 
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
	freopen("npack.in","r",stdin);
	freopen("npack.out","w",stdout);
	int m,n;
	cin>>m>>n;
	int v[31];
	int dp[31][20001];
	for(int i=1;i<=n;i++)
	{
		cin>>v[i];
	}
	for(int i=1;i<=30;i++)
	{
		for(int j=1;j<=20000;j++)
		{
			dp[i][j]=0;
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=m;j>=0;j--)
		{
			if(j>=v[i])
			{
				dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i]]+v[i]);
			}
			else
				dp[i][j]=dp[i-1][j];
		}
	}
	int h=m;
	h=h-dp[n][m];
	cout<<h;
	return 0;
}