zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    MYSQL 优化(二),持续更新收藏
    一些linux命令 备份下
    lsyncd +xinetd+syncd 多服务器文件同步
    阿里slb+ecs+https
    微擎 从 php5 到php7 的各种填坑 持续更新
    lmap
    微擎的ifp ife ifpp
    工具索引 mark名字
    Funny Bug || Sky Hole
    mysql 查询小技巧
  • 原文地址:https://www.cnblogs.com/gcter/p/11210466.html
Copyright © 2011-2022 走看看