滾動數組的實現

#include<bits/stdc++.h>
using namespace std;
int dp[2][maxn]
int main()
{
    for(int i = 1; i <= n; i++)
    {
        for(int j = 0; j <= w; j++)
        {
            if(j < w[i])
            {
                dp[(i + 1) & 1][j] = dp[i & 1][j];
            }
            else
            {
                dp[(i + 1) & 1][j] = max(dp[i &1][j], dp[(i + 1) & 1][j - w[i]] + v[i]);
            }
        }
    }
    cout <<dp[n & 1][w] << endl;
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章