题解:每个物品放与不放两种情况,注意物品可能没有空余地方放进去了
#include <stdio.h>
#include <iostream>
using namespace std;
int v,n;
int a[35];
int wigh[20005];
int set(int k,int number){
if(number-a[k]<0)//这个物品放不进去
if(k+1==n)return number;
else
return min(number,set(k+1, number));
else {//这个物品可以放得进去
if(k+1==n)return number-a[k];
int t=min(set(k+1, number-a[k]),set(k+1, number));//放与不放中最小的
return t;
}
}
int main(){
cin>>v>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
cout<<set(0, v)<<endl;
return 0;
}