lintcode-背包问题-92

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)