讨论 / C++ AC 29行 DP
cpsn 2015-06-20 03:48:33
点我顶贴 收藏 删除
#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;

}

}

#1 hrp-premium@2016-08-11 04:59:25
回复 删除
格式啊
查看更多回复
提交回复