• AC_2. 01背包问题


    代码:

    #include<iostream>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    int N, V;//定义数据组数和背包容量
    const int NUM = 1005;
    int v[NUM], w[NUM];
    int dp[NUM][NUM];//定义数组保存记录
    int main()
    {
        cin >> N >> V;
        memset(dp, 0, sizeof dp);
        for (int i = 1; i<=N; i++)
        {
            cin >> v[i] >> w[i];
        }
        for (int i = 1; i<=N; i++)//因为要计算上一个,所以从1开始计数
        {
            for (int j = V; j>0; j--)
            {
                if (j>=v[i])
                {
                    dp[i][j] = max(dp[i - 1][j], dp[i-1][j - v[i]]+ w[i]);//装进来
                }
                else
                {
                    dp[i][j] = dp[i-1][j];//不装
                }
            }
        }
        cout << dp[N][V] << endl;
        return 0;
    }

     改进

    #include<iostream>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    int N, V;//定义数据组数和背包容量
    const int NUM = 1005;
    int v[NUM], w[NUM];
    int dp[NUM];//定义数组保存记录
    int main()
    {
        cin >> N >> V;
        memset(dp, 0, sizeof dp);
        for (int i = 1; i<=N; i++)
        {
            cin >> v[i] >> w[i];
        }
        for (int i = 1; i<=N; i++)//因为要计算上一个,所以从1开始计数
        {
            for (int j = V; j>=1; j--)
            {
                if (dp[j]<= dp[j-v[i]]+w[i]&&j-v[i]>=0)
                {
                    dp[j] = dp[j - v[i]]+ w[i];//装进来
                }
            }
        }
        cout << dp[V] << endl;
        return 0;
    }
  • 相关阅读:
    IOS-UI基础-图片浏览器
    IOS-UI基础-UIImageView帧动画
    IOS-UI-transform
    IOS-UI基础-按钮扩展
    IOS-UI基础-UIView和UIViewController
    IOS-UI基础-按钮
    OC-关于COPY关键字
    OC-NSNumber与NSValue
    OC-NSFileManager创建目录
    2019规划目标
  • 原文地址:https://www.cnblogs.com/gcter/p/11210466.html
Copyright © 2020-2023  润新知