首页 > 其他分享 >复习笔记二(动态规划法)

复习笔记二(动态规划法)

时间:2024-06-17 16:56:54浏览次数:25  
标签:复习 vi 规划法 笔记 算法 食品 ti array dp

工作指派问题(20 分) 设有 n 件工作, n 个人,每个人只能做一件工作,每件工作只能安排给一个 人,已知每个人做每件工作的耗费,请设计分支限界算法求解最少耗费的工作指 派。 要求: (1) 对问题进行分析; (9 分 ) (2) 给出分支限界算法的伪代码描述; (8 分 ) (3) 分析以上算法的时间复杂度。 (3 分 )
对问题的分析: 我们有 n 种不同的食品,每种食品的加工时间为 ti​,利润为 vi​。我们需要在总加工时间不超过 T 的情况下选择加工食品,使得总利润最大。

状态表示:

设dp[i][j] 表示前 i 种食品在总时间不超过 j 时能够获得的最大利润。

状态转移方程:

dp[i][j]=max(dp[i−1][j],dp[i−1][j−ti​]+vi​)

其中:

  • dp[i−1][j] 表示不选择第 �i 种食品时的最大利润。
  • dp[i−1][j−ti​]+vi​ 表示选择第 �i 种食品时的最大利润。

最小问题时的值:

初始条件:dp[0][j]=0,for all j 表示没有食品时,无论总时间为多少,利润都是 0。

伪代码:

Algorithm: Maximize Profit for Food Processing
Input: n (number of foods), T (maximum processing time), array t (processing times), array v (profits)
Output: Maximum profit

1. Initialize dp array of size (n+1) x (T+1) with all values set to 0

2. for i from 1 to n do
3.     for j from 0 to T do
4.         if j >= t[i-1] then
5.             dp[i][j] = max(dp[i-1][j], dp[i-1][j-t[i-1]] + v[i-1])
6.         else
7.             dp[i][j] = dp[i-1][j]

8. return dp[n][T]

期末真题!!!非常重要,好久没有更新了,学校课程安排太紧凑了,考试集中,破防周!!!明天考算法了!!!(临阵磨枪嘿嘿嘿),大家祝我好运!!!

标签:复习,vi,规划法,笔记,算法,食品,ti,array,dp
From: https://blog.csdn.net/2301_79582459/article/details/139741390

相关文章

  • 操作系统B期末复习(STD)
    操作系统1、什么是操作系统基本特征是什么?操作系统是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充2、PCBTCBFCB相关内容PCB:①基本信息:进程控制块,又叫进程表,是操作系统中最重要的记录型数据结构。记录了操作系统所需的,用于描述进程的当前情况以及管理进程运行的......
  • git学习笔记——202406171525
    想将本地仓库代码提交到远程仓库,应注意:如果在新建远程仓库时里面还新建了文件,在本地提交代码时会显示两个分支是冲突的,git认为是两个不相关的仓库代码,会拒绝上传。解决方法是gitpullremotemaster拉取远程代码到本地,然后再gitpushremote-umaster相关链接:https://www.cn......
  • Java速成笔记 2024.6.17版
    变量:可以变化的容器不同变量可以存储不同类型的值变量声明方法:变量类型变量名=初始值;E.G.inta=1;变量类型:整型:intlong浮点数:floatdouble布尔:boolean字符串:String字符:char变量命名注意事项:不能重名不能以数字开头常量:关键字:final语法:finalfl......
  • 从事网络安全领域吃香吗?零基础入门精通就业,附学习笔记
    吃香是真的会吃香?但是很辛苦。在安服这行工作是做的痛并快乐着。工作是没有轻松的,都是付出和回报成正比的,而且还要不停学习提升,丝毫不敢懈怠。不可能不加班,能正常作息很难,网络安全系列的岗位是IT行业里最辛苦的,接触了太多圈内同行朋友,基本上都是007,996真是福报奢侈,有时候......
  • 程序员修炼之道:从小工到专家阅读笔记02
    做程序要及时亡羊补牢修复,这意味着在编程过程中,我们需要时刻关注代码的质量,一旦发现潜在的问题或错误,立即进行修复。遵循编码规范和风格指南,编写易于维护和阅读的代码。这样可以降低出错的可能性,并在出现问题时更容易进行修复。在发现问题时,及时与团队成员沟通,分享自己的发现和解......
  • 程序员修炼之道:从小工到专家阅读笔记01
    程序员要勇于承担错误,这意味着在编程过程中,我们需要敢于面对和解决出现的问题。以下是一些关于勇于承担错误的建议:诚实面对错误:当发现程序中的错误时,不要试图掩盖或忽视它们。诚实地面对问题,承认自己的错误,并寻求解决方案。分析错误原因:在解决问题之前,首先要了解错误发生的原因。......
  • 程序员修炼之道:从小工到专家阅读笔记04
    耦合这个词基本在我的职业生涯中每天都能听到,一个好的程序一定是低耦合的,这本书提出了函数的德墨忒尔法则帮我们更好的界定耦合的边界,怎样编写低耦合的代码,更难能可贵的是这本书不仅仅描述了一般的代码耦合,还花了很大笔墨解释了时间耦合,很多时候一个业务的实现没有必要一定是线性......
  • 程序员修炼之道:从小工到专家阅读笔记03
    这本书的适用范围可以从初学者到有经验的程序员再到项目经理,作为一本偏向理论与思想的书,书中不可避免有些假大空的地方,再加上作者写完本书的时间还在1999年,书中的很多方法与标准放在今天也已不再实用。但这些都不能掩盖它的优秀之处,作者曾在本书完成十年后说过,如果这本书是放在现......
  • 程序员修炼之道:从小工到专家阅读笔记06
    程序需要遵守的实用主义原则。 重复的危害:如果某个事物在代码中重复多次,就可能会在维护过程中带来问题,因为改动了一处而忘记改动另一处造成自相矛盾。这加大了维护难度。要遵守DRY原则,即Don’trepeatyourself。重复通常由这些东西引起:强加的重复,由文档或用户需求决定。这通......
  • 程序员修炼之道:从小工到专家阅读笔记05
    程序员所应该遵循的实用主义原则。 我的源码让猫给吃了:出现错误时,要诚实,不要推诿或者找借口。要提供各种可能的解决方案与后果并与他人沟通,而不是提供借口。 软件的熵:这是著名的破窗户原理。项目中一个小的、无人料理的问题可能带来后续编码时的懈怠,从而造成更大的问题。不......