php中文网 | cnphp.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 488|回复: 0

算法(背包问题)

[复制链接]

3138

主题

3148

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

UID
1
威望
0
积分
7946
贡献
0
注册时间
2021-4-14
最后登录
2024-11-21
在线时间
763 小时
QQ
发表于 2022-7-20 11:51:12 | 显示全部楼层 |阅读模式
/**
* @file Fractional_Knapsack_Problem.c++
* @author Luke Tebo (luketebo.ycs@gmail.com)
* @brief
* @version 0.1
* @date 2022-05-24
*
* @copyright Copyright (c) 2022
*
* 输入: n个物品组成的集合O, 每个物品有两个属性vi 和 pi, 分别表示体积和价格
*        背包容量为C
* 输出: 背包中物品的最大价值
*/
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Fractional_Knapsack_Problem
{
private:
    /* data */
public:
    Fractional_Knapsack_Problem(/* args */);
    ~Fractional_Knapsack_Problem();
    void knapsack(vector<float> &v, vector<float> &p, int c);
};

Fractional_Knapsack_Problem::Fractional_Knapsack_Problem(/* args */)
{
}

Fractional_Knapsack_Problem::~Fractional_Knapsack_Problem()
{
}

void Fractional_Knapsack_Problem::knapsack(vector<float> &v, vector<float> &p, int c)
{
    // v : 体积
    // p : 价格  都是有序的(假设)
    // c : 背包容量

    int size = v.size();
    int result = 0;              // 背包中物品的最大价值
    vector<float> average(5, 0); // 分数

    for (int i = 0; i < average.size(); i++)
    {
        average.push_back(v / p);
    }
    for (int i = 0; i < average.size(); i++)
    {
        cout << average << " ";
    }
    cout << endl;
    for (int i = 0; i < size; i++)
    {
        if (v <= c)
        {
            result += p;
            c -= v;
        }
        else
        {
            result += p * c / v;
            c = 0;
        }
    }
    cout << result << endl;
}
int main()
{
    vector<float> v = {5, 4, 3, 2, 1}; // 体积
    vector<float> p = {1, 2, 3, 4, 5}; // 价格
    Fractional_Knapsack_Problem f;
    f.knapsack(v, p, 5);
    return 0;
}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|php中文网 | cnphp.com ( 赣ICP备2021002321号-2 )

GMT+8, 2024-11-22 02:47 , Processed in 0.800079 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

申明:本站所有资源皆搜集自网络,相关版权归版权持有人所有,如有侵权,请电邮(fiorkn@foxmail.com)告之,本站会尽快删除。

快速回复 返回顶部 返回列表