cpsn 2015-06-20 03:45:57
点我顶贴
收藏
删除
#include<iostream>
using namespace std;
#define MAX 35020
#define MAX_B 30
bool f[MAX][MAX_B] = { 0, };
int main(){
int c, b;
cin >> c >> b;
int e[MAX_B] = { 0, };
for (int i = 0; i < b; i++)
cin >> e[i+1];
for (int i = 0; i <= b; i++) f[0][i] = true;
for (int i = 0; i <= c; i++){
for (int j = 1; j <= b; j++){
if (e[j]>c)continue;
else{
if (f[i][j-1] ==true){
f[i][j] = true;
if (i + e[j] <= c)f[i + e[j]][j] = true;
}
}
}
}
for (int i = c; i >= 0; i--)if (f[i][b] == true){
cout << i << endl;
return 0;
}
}