装箱问题可谓是十分经典,但有很多小伙伴不知道如何用DP思想来解这道题,暴力的话,容易TLE,下面,我来给大家展示一下我的代码。
不喜轻喷!!!
#include<bits/stdc++.h>
using namespace std;
bool b[200000];
int n, v;
int a[35];
int main(){
cin >> v >> n;
for (int i = 1; i <= n; i++)
cin >> a[i];
b[0] = 1;
for (int i = 1; i <= n; i++)
for (int j = v; j >= a[i]; j--)
if (b[j - a[i]]) b[j] = 1;
for (int i = v; i >= 1; i--)
if (b[i]){
cout << v - i << endl;
break;
}
return 0;
}
洛谷网址:https://www.luogu.com.cn/problem/P1049
关注weisuodewudi,懂更多!