class Solution {
public:
int backPack(int m, vector<int> A) {
bool f[A.size()+1][m+1] ;
int size=A.size();
for (int i = 0; i <= size; ++i) {
f[i][0] = true;
}
for (int j = 1; j <= m; ++j) {
f[0][j] = false;
}
for (int i = 1; i <= size; i++) {
for (int j = 0; j <= m; j++) {
f[i][j] = f[i-1][j];
if (j >= A[i-1] && f[i-1][j - A[i-1]]) { // 保证j-A[i]不是负数
f[i][j] = true;
}
}
}
for (int i = m; i >= 0; --i) { // max size
if (f[size][i]) {
return i;
}
}
return 0;
}
};
lintcode-背包问题-92
最新推荐文章于 2022-05-08 22:03:02 发布