有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数)。
要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。
一个整数v,表示箱子容量
一个整数n,表示有n个物品
一个整数,表示箱子剩余空间。
24
6
8
3
12
7
9
7
0
#include <iostream> #include <algorithm> using namespace std; int getgoods(int goods[],int k,int v,int n) { int a,b; if(k >= n) return v; if(v - goods[k] < 0 ) return v; if(v - goods[k] == 0) return 0; a=getgoods(goods,k+1,v-goods[k],n); b=getgoods(goods,k+1,v,n); if(a < b) return a; else return b; } int main(void) { int v,n; int i; int goods[31]; int last; cin >> v >> n; for(i=0;i < n;i++) cin >> goods[i]; std::sort(goods,goods + n); last=getgoods(goods,0,v,n); cout << last << endl; return 0; } 文章来源: https://blog.csdn.net/qq_42418728/article/details/88201068