使用先序遍历:
#include<bits/stdc++.h> using namespace std; int v,n; vector<int>volum(1010); int find(int i,int j){ if(j>v) return 0; if(i>=n) return j; return max(find(i+1,j),find(i+1,j+volum[i])); } int main(){ ios::sync_with_stdio(false), cin.tie(nullptr),cout.tie(nullptr); cin >> v; cin >> n; for(int i = 0;i < n;++i){ cin >> volum[i]; } cout<<v-find(0,0); return 0; }