用了个很笨的办法~
同时学会了使用string.h里的memset
1: #include<iostream>
2: #include<string.h>
3: using namespace std;
4: const int maxv=2000000;
5: int v[maxv]={0};
6: bool can[maxv]={0};
7: int n=0,totv=0;
8:
9: void get_input()
10: {
11: memset(can,0,sizeof(can));
12: can[0]=1;
13: cin >> totv;
14: cin >> n;
15: for (int i=0;i<n;i++) cin >> v[i];
16: }
17:
18: int work()
19: {
20: for (int i=0;i<n;i++)
21: for (int j=totv+1;j>=0;j--){
22: if (can[j]) can[j+v[i]]=true;
23: }
24: for (int i=totv;i>=0;i--) if (can[i]) return i;
25: }
26:
27: int main()
28: {
29: get_input();
30: cout << totv-work() << endl;
31: }