本蒟蒻感觉写的没毛病
#include <iostream>
#include <cstdio>
using namespace std;
int n, a[20010], ans=0x7777777,siz;
void dfs(int sum,int x)
{
if ( x > n)
{
ans = min(ans, sum);//要最小的容量
return;
}
for (int i = x; i <= n; i++)
{
if (sum >= a[i])//如果背包剩余空间可以拿的起
{
sum -= a[i];//拿下
dfs(sum,i+1);//下一个物品
sum += a[i];//不拿
}
}
}
int main()
{
cin >> siz;
cin >> n;
for (int i = 1; i <= n; i++)
cin >> a[i];
dfs(siz,1);
cout << ans;
return 0;
}