C++带有期限和效益的单位时间的作业排序贪心算法JS

C++实现0-1背包问题(含源码) 接下来,我们定义了一个dp数组,该数组表示容量为j的背包在前i个物品中所能达到的最大价值。通过两重循环来计算每种情况下的最优解,如果当前物品重量小于等于当前背包容量,那么考虑将该物品放入背包中所能获得的价值是否更高,如果更高则更新dp数组。当我们需要在有限的容量内选取物品来达到最大效益的时候,就可以用到0-1背包问题。由于数组下标从1开始,我们定义了一个大小为n+1的数组来存储每个物品的重量和价值。以上代码能够完成0-1背包问题求解的基本功能,但可能存在空间优化和优化时间复杂度的操作,供学习使用。 阅读详情

余祥宣, 崔国华, 邹海明. 计算机算法基础.3版[M]. 华中科技大学出版社, 2006.
P107 算法5.4

#include<iostream>
using namespace std;

int JS(int D[], int J[], int n, int k)
{
    int r,i;
    D[0] = J[0] = 0;
    k = 1;
    J[1] = 1;
    for ( i = 2; i <=n; i++)
    {
        r = k;
        while (D[J[r]] > D[i] &&D[J[r]] != r)
            r--;

        if (D[J[r]]<=D[i] && D[i]>r)
        {
            for (int j = k; j > r ; j--)
                J[j + 1] = J[j];

            J[r + 1] = i;
            k++;
        }
    }
    return k;
}

void SORT(int P[], int D[], int start,int end)
{
    for (int i = start+1; i <= end; i++)
    {
        int item = P[i];
        int item_d = D[i];
        int j = i - 1;
        while (j>=start&&item > P[j])
        {
            P[j + 1] = P[j];
            D[j + 1] = D[j];
            j--;
        }
        P[j + 1] = item;
        D[j + 1] = item_d;
    }
}

int main()
{
    const int MAX = 8;
    int P[MAX] = { 0,30,25,20,15,10,5,35 };
    int D[MAX] = { 0,2,4,3,4,8,3,4};

    //int P[MAX] = { 0,15,12,11,10,8,5,4 };
    //int D[MAX] = { 0,2,3,1,3,4,5,2};
    int J[MAX];
    int n = 7;

    cout <<"i\tP[i]\tD[i]\t Before Sort" << endl;
    for (int i = 1; i <=n; i++)
    {
        cout<<i<<"\t" << P[i] << "\t" << D[i] << "\t"  << endl;
    }
    cout << endl;
    SORT(P, D,1, n);
    cout << "i\tP[i]\tD[i]\t After Sort" << endl;
    for (int i = 1; i <= n; i++)
    {
        cout << i << "\t" << P[i] << "\t" << D[i] << "\t" << endl;
    }
    cout << endl;
    n=JS(D, J, n, 0);

    cout << "i\tJ[i]\tP[J[i]]\tD[J[i]]\t Result" << endl;
    for (int i = 1; i <=n; i++)
    {
        cout<<i<<"\t"<<J[i]<<"\t"<<P[J[i]]<<"\t"<<D[J[i]]<<"\t"<<endl;
    }

    int sum = 0;
    for (int i = 1; i <= n;i++)
    {
        cout << "->" << J[i];
        sum += P[J[i]];
    }
    cout << "\tsum=>" << sum;
    system("pause");
    return 0;
}

运行结果
C++带有期限和效益的单位时间的作业排序贪心算法运行结果1
C++带有期限和效益的单位时间的作业排序贪心算法运行结果2

【信息科学与工程学】【数据科学】数据科学领域 第六篇 算法设计 01 算法设计 阅读详情

相关推荐

【信息科学与工程学】【数据科学】数据科学领域——第三篇 数学08 几何学07 网络几何01

编号类型领域问题问题的数学分析参数列表及参数的数值范围关联知识1组合优化 / 计算几何网络几何(几何图论):给定平面上的 n 个点(节点),求连接所有点的总边长最小的树。数学模型:设点集 P={p1​,…,pn​}⊂R2,边权为欧氏距离 d(pi​,pj​)=(xi​−xj​)2+(yi​−yj​)2​。目标是找到一棵生成树 T=(P,E)使得 ∑(i,j)∈E​d(pi​,pj​)最小。该问题是经典 MST 在欧氏度量下的特例,属于 NP-hard 吗?

weixin_49199313的博客 167

动态规划(二)最优二分检索和0/1背包

一、最优二分检索???? 二、0/1背包问题

很注重数学和408 1942

【信息科学与工程学】计算机科学与自动化-——第十五篇云计算 12 公有云里的“多Region + 多AZ“ 02 运营算法01

算法逐步思考推理思考(含数学方程式、对象、资源、任务、进程/协程/线程及对应的代数、约束、目标函数/传递函数/依赖函数、参数及参数的数值范围及边界条件、逐步推理的数学方程式列表、上下文切换、并发/串行/随机/乱序/顺序)算法逐步思考推理思考(含数学方程式、对象、资源、任务、进程/协程/线程及对应的代数、约束、目标函数/传递函数/依赖函数、参数及参数的数值范围及边界条件、逐步推理的数学方程式列表、上下文切换、并发/串行/随机/乱序/顺序)云厂商提高闲置资源利用率。算法复杂度为O(N),N为实例数量。

weixin_49199313的博客 282

C++二分检索算法

余祥宣, 崔国华, 邹海明. 计算机算法基础.3版[M]. 华中科技大学出版社, 2006. P73 算法4.3 #include using namespace std; int BINSRCH(int A[], int n, int x, int &j) { int low, high, mid; low = 1; high = n; while (

Dui 1004

C++实现回溯算法 0 1 背包算法

C++代码实现回溯算法 0 1 背包算法

大模型LLM部署方式

建议根据实际需求选择方案,企业级服务优先考虑vLLM或TGI,个人用户可尝试Ollama或Hugging Face本地加载。若需完整代码示例,可参考网页2的VLLM实战或网页5的TGI部署案例。:高并发、低延迟的API服务,需分布式推理支持。:快速创建可分享的Web应用。:个人开发、快速原型验证。

u010249118的博客 516

算法(c++)——0-1背包问题

算法(c++)——0-1背包问题:0-1背包问题。现有n件物品和个容量为c的背包。第i件物品的重量是重量为w[i],价值v[i]。已知对于一件物品必须选择取(用1表示)或者不取(用0表示),且每件物品只能被取一次(这就是“0-1"的含义)。求放置哪些物品进背包,可使这些物品的重量总和不超过背包容量,且价值总和最大。运用动态规划法实现背包最大价值最优装载方式。

高冷男孩不吃苹果的博客 4696

libcurl库使用详情、libcurl库的制作

​ libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,和用户认证。libcurl的官网 、库下载。这种库使用的时候就像使用wiringPi库一样,编写完代码需要链接这个库,所以要先下载这个库。libcurl的使用(其实和socket编程时一样,都需要一定的步骤):

qq_45698138的博客 5338

C++经典排序算法总结

转发请注明出处:https://www.cnblogs.com/fnlingnzb-learner/p/9374732.html  最近在研究一些经常用到的东西想把它们做一个汇总,想了想用到最多的应该是排序算法,所以对排序算法做了个总结,并自己用C++实现了一下。 一、算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复...

weixin_34175509的博客 1253

不用API Key也能玩转Obsidian AI:本地大模型离线配置全攻略

本文详细介绍了如何在无需API Key的情况下,通过本地部署大型语言模型(LLM)为Obsidian注入AI能力。文章以Ollama为例,提供了从环境准备、模型选择到与Obsidian插件(如Text Generator)集成的完整配置攻略,旨在帮助用户打造一个安全、离线可用的智能笔记工作流,实现数据隐私与AI助力的完美结合。

weixin_29062963的博客 818

5G MBS(组播广播服务)深度解析:从标准架构到商用实践

5G MBS(组播广播服务)深度解析:从标准架构到商用实践

大家好,我是码农老gou,一名专注于编程技术的程序员。在这个博客中,我将与大家分享我在工作和学习中的经验、见解以及一些实用的技术干货。 1083

C++ 贪心算法带期限和效益的作业排序的一个更快算法FJS

C++ 贪心算法带期限和效益的作业排序的一个更快算法FJS

weixin_42939136的博客 4624

Potplayer + LAVFilters + madVR 配置教程

文章目录Potplayer + LAVFilters + madVR 配置教程工具安装篇设置调教1.potplayer播放器设置加载LAVFilters和madVR1.选择“源滤镜/分离器”选项,选择“滤镜/解码器管理”2.“添加外部滤镜”3.浏览到刚才LAVFilters解压的文件夹,分别添加图示项。4.添加后回到管理界面设置,点击左边的”LAV AudioDecoder”,将右边”音频解码器”...

re 16万+

贪心算法:带有限期的作业调度(任务调度)及证明

1. 度量标准 下一次输入为使得效益值加最增大的作业,同时不违反约束条件。 max⁡∑i∈Jpi \max \sum_{i\in J}{p_i} maxi∈J∑​pi​ 2.SPARKS语言描述 procedure GREEDY_JOB(D, J, n) // 作业按 p1 ≥ p2 ≥ … ≥ pn的次序输入,它们的期限值 D(i) ≥ 1, 1 ≤ i ≤ n, n ≥ 1。 // J是在它们的截止期限完成的作业的集合 J←{1} for i←2 to n do if J∪{i}的所有作业能

Enoch 8433

【AI生成】 LoRa无中心自组网实现方案

LoRa技术是一种低功耗广域网通信技术,它采用了扩频频率调制技术,能够实现远距离的传输。LoRa在物联网中具有重要的应用价值,可以支持大规模的设备连接并且具有较低的成本。同时,LoRa具有高度的抗干扰能力和适应性,能够在复杂的环境中实现稳定的通信。通过使用无中心自组网实现方案,可以进一步提高LoRa网络的灵活性和可靠性,实现设备之间的智能互联。LoRa无中心自组网实现方案将为物联网应用提供更加便捷和高效的通信解决方案。LoRa无中心自组网实现方案一、无中心自组网概念及优势。

qq_31310977的博客 2090

Windows服务器XMRig挖矿病毒深度清除实战指南

XMRig是一种广泛用于Monero(XMR)加密货币挖矿的开源工具,其在Windows环境中的持久化机制已远超传统木马范畴,融合WMI事件订阅、服务伪装、PowerShell无文件执行与注册表隐写等多重反检测技术。理解其基于行为而非特征的生存逻辑,是实现有效检测与根除的前提。该技术具备强隐蔽性、高自愈性与网络通信合法化特征,常见于RDP弱口令爆破、SMB共享泄露及PowerShell远程执行等非漏洞类入侵场景。本文聚焦Windows原生命令与Sysinternals工具链,提供覆盖进程定位、WMI清理、服

weixin_30535843的博客 732

程序员必须知道的10大基础实用算法及其讲解

算法一:快速排序算法快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(nlogn)算法更快,因为它的内部循环(innerloop)可以在大部分的架构上很有效率地被实现出来。快速排序使用分治法(Divideandconque...

weixin_33921089的博客 554

Pyside6实战:3种.ui文件加载方式对比(附完整代码示例)

本文深入解析Pyside6中3种.ui文件加载方式的优劣与性能优化策略,包括动态加载QUiLoader、预编译方案及混合策略。通过实测数据和完整代码示例,帮助开发者根据项目需求选择最优解,提升界面加载效率与内存管理。

weixin_30897233的博客 90

基于C++的K-近邻分类算法实现

一、          算法简介1.   简介邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。kNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在...

今天颈椎还疼吗 2279

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

c++十大排序算法之选择排序

c++十大排序算法之选择排序

hesphoros的个人博客 1107

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

从零开始学C++之STL(四):算法简介、7种算法分类

一、算法 算法是以函数模板的形式实现的。常用的算法涉及到比较、交换、查找、搜索、复制、修改、移除、反转、排序、合并等等。 算法并非容器类型的成员函数,而是一些全局函数,要与迭代器一起搭配使用。 算法的优势在于只需实作一份,可以适应所有的容器,不必为每一种容器量订制。也可以与用户定义的容器搭配。 算法尾词: _if 比如find(按某个值来查找),find_i

Meditation 4336

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

八大排序之堆排序(Java)

将初始待排序关键字序列(R1,R2….Rn)构建成大顶堆,此堆为初始的无序区;将堆顶元素R[1]与最后一个元素R[n]交换,此时得到新的无序区(R1,R2,……Rn-1)和新的有序区(Rn),且满足R[1,2…n-1]<=R[n];由于交换后新的堆顶R[1]可能违反堆的性质,因此需要对当前无序区(R1,R2,……Rn-1)调整为新堆,然后再次将R[1]与无序区最后一个元素交换,得到新的无序区(R1,R2….Rn-2)和新的有序区(Rn-1,Rn)。不断重复此过程直到有序区的元素个数为n-1,则整个排序

weixin_52350896的博客 435

C++ 算法主题系列之集结0-1背包问题的所有求解方案

背包问题是类型问题,通过对这一类型问题的理解和掌握,从而可以归纳出求解此类问题的思路和模板。0-1背包问题,也称为不可分割背包问题。无限背包问题。判定性背包问题.带附属关系的背包问题。双背包求最优值.构造三角形问题.带上下界限制的背包问题(012背包……本文将介绍0-1背包问题的各种求解方案,通过对各种求解方案的研究,从而全方面了解0-1背包问题的本质。本文主要讲解背包系列 中的0-1背包问题。0-1背包问题可以使用递归和动态规划方案得到其解。

y6123236的专栏 1914

算法分析复习

算法分析考试范围 奔腾答案大多有错,理性看待 考试题型与对应分值: 选择题10道(20分) 简答题4道(20分) 证明题2道(15分) 计算题3道(30分) 算法题1道(15分) 第二章:算法设计与分析 出证明题与选择题,证明题类似于: 证明两个函数之间存在O或Θ的关系。 第三章:递归 不单独出题 第四章:分治法 出小题,大概率出算法题,不出计算题。 第五章:贪心方法 以下可能出证明: ”证明贪心解为最优解“的证明 (PPT5章19页) 定理5.2的证明(ppt5章71页) 定理5.3的证

KQ的博客 7547

0/1背包问题---C++动态规划法

【问题】 给定n种物品和一个背包,物品i(1≤i≤n)的重量是,其价值为,背包容量为,对于每种物品只有两种选择:装入背包或者不装入背包。如何选择装入背包的物品,使得装入背包中物品的总价值最大? 【想法】 首先证明0/1背包问题满足最优性原理。 设是0/1背包问题的最优解,则是下面子问题的最优解: 其中要找到 如若不是子问题最优解,则在子问题必然有一个最优解的前提下,设是上述子问题的一个最优解,则,且。因此,,这说明...

SweeneyH的博客 9247

0/1背包问题 - 暴力法(C++实现)

0/1背包问题 - 暴力法(C++实现)flyfish暴力法,蛮力法,brute force都是一个意思 枚举所有的情况解决问题。放与不放到背包里,采用二进制表示,1表示放入背包,0表示不放入背包从n个不同元素中,任取m(m<=n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合;从n个不同元素中取出m(m<=n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数。用符号

二分掌柜的 4168
上一篇: C++改进的选择算法SELECT2
下一篇: C++Prim最小生成树算法
小英雄Dui
博客等级 码龄11年 37粉丝 41原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值