比赛 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;
}