算法学习笔记-动态规划
动态规划动态规划采用闫式dp分析法,可以很好的解决下面四类问题:· 0-1背包问题· 完全背包问题· 最优合并问题· 最长公共子序列(LCS)问题下面会详细分析下面四类题目的解法题解思路。
01背包问题分析有一个容量为C的背包,还有n个物体。现在忽略物体实际几何形状,我们认为只要背包的剩余容量大于等于物体体积,那就可以装进背包里。每个物体都有两个属性,即体积w和价值v。问:如何向背包装物体才能使背包中物体的总价值最大?
状态表示:f[i][j] 表示在前i个物体中,背包容量为j时,能装入的物体的最大价值。 所以,我们要求最终f[n][c]
状态计算:f[i][j] 可以划分成两种情况:1)所有选择第i个物体的方案的最优值,等于f[i-1]j-w[i]] + v[i]2)不选择第i个物体的方案的最优值,等于f[i-1][j]
并且我们需要考虑一个情况,就是当前容量j已经不够放第i个物体了,此时我们只能选择不装第i个物体,即f[i][j] = f[i-1][j]
所以代码如下:
12345678910111213141516int knapsack01(vector<int ...
Linux bash及脚本程序设计
bash及脚本程序设计4.1shell的基本机制shell 概述
Shell 的功能
shell是命令解释器
文件名替换、变量替换、命令替换
历史替换、别名替换
流程控制的内部命令
Shell的特点
主要用途:批处理,执行效率比算法低
shell是面向命令处理的语言,提供的流程控制结构通过对一些内部命令的解释实现
bash的启动
三种启动方法:注册shell、交互式shell、脚本解释器
启动交互式bash
自动执行的一批命令,即系统级命令
当bash作为注册shell被启动时,自动执行/etc/profile的命令
当bash作为交互式shell启动时,自动执行/etc/bash.bashrc
当bash作为注册shell退出时,自动执行etc/bash.bash.logout
输入重定向
< filename:从数据文件中获取stdin。
<< word:从shell脚本获取数据直到遇到定界符word
当定界符加上单引号,不允许内容替换(变量替换、命令替换等)
<<< word:从命令行获取信息作为标准输入
4.2变量变量的赋值及使用bash变量 ...
JavaScript权威指南学习日记
emmm….今天是2025年4月23日,北邮图书馆。对于一位即将备战考研的大三计科学生,一直以来对前端技术怀有热情,作为一个能将产品最能直面用户、且最直接的一个岗位,一直带给我无限的好奇,崇尚那种所见即所得的视觉冲击、羡慕那些一眼就能留住用户吸引眼球的界面,于是便想要一探究竟,所以从大二开始从基本html5、css3 到 JavaScript 以致现在学的React、React Native,但是学到现在,感觉对于JavaScript总是不能灵活运用,虽然会写,但我深知我对这个语言的掌握程度远远不够。。。
我决定要将JavaScript完全掌握,在网上寻寻觅觅了很多资料,最终选择了《JavaScript权威指南》这本书,正如书名所说,这是业界前端开发者普遍认为的权威指南,从今天开始,我将要坚持每天半小时来阅读这本书,并且将我的学习心得记录在这篇博客下。
4月4月23日第三章类型、值和变量
今天学习了文本字符串部分的内容
字符串是16位值的不可修改的有序序列,其中每个值都表示一个Unicode字符。对于码点超出16位的Unicode字符会被编码为两个16位值序列(代理对),length ...
软件工程-(2)面对对象需求分析
领域模型针对某一特定领域内概念类或者对象的抽象可视化表示。
主要用于概括地描述业务背景及业务流程,通过UML的类图和活动图进行展示,帮助软件开发人员在短时间内了解业务。
业务背景:通过代表关系的词汇建立概念类之间的关系,表示成代表业务知识结构的类图
业务流程:一般由角色及其执行的活动(活动及任务节点)构成,活动的输出一般有数据对象和传给另一个活动的消息组成,建议使用UML的活动图进行描述。
领域模型的创建步骤如下:
找出当前需求中的候选概念类
在领域模型中描述这些概念类。用问题域中的词汇对概念类进行命名,将与当前需求无关的概念类排除在外
在概念类之间添加必要的关联来记录那些需要保存记忆的关系,概念类之间的关系用关联、继承、组合/聚合来表示
在概念类中添加用来实现需求的必要属性
类图类包含三个部分:类名、属性、操作
类的关系有:关联、组合与聚合、依赖和继承
关联
两个相对独立的类,当一个类的实例与另外一个类的特定实例存在固定关系时,这两个类之间就存在关联关系,在UML中,类之间的关联关系用实线箭头来表示,例如学生与图书之间有1对多的关联
.ziaszgrmojuj{zo ...
软件工程-(1)概述
一、软件1、软件的定义软件是包括程序、数据及其相关文档的完整集合
程序和数据时构造软件的基础,文档是软件质量的保证,也是保证软件更新及生命周期长短的必需品
2、软件的特点软件是一种逻辑实体,具有抽象性
软件开发过程中没有明显的制造过程,应理解为创作
不存在机械磨损和老化的问题,但存在软件退化的问题
软件开发至今未完全摆脱手工艺的开发方式
3、软件的分类根据软件服务对象的范围不同:
通用软件:操作系统、数据库等
定制软件:企业ERP、办公自动化系统等
根据软件完成功能所处的层次不同:
应用软件、中间件软件、系统软件
系统软件: 指能与硬件紧密配合在一起,使整个计算机系统各个部件、相关的软件和数据协调、高效地工作
二、软件工程1.软件工程的定义(1)应用系统化的、规范化的、定量的方法来开发、运行和维护软件,即将工程应用到软件
(2)对(1)中各种方法的研究
2.软件工程的要素 三要素:方法、工具和过程
3.软件工程的目标和原则 软件工程的目标可概括为: 生产具有正确性、可用性以及开销适宜的软件产品。软件产品应该具有以下性质:
可修改性、有效性、可靠性、可理 ...
Linux开发环境及应用
文件系统管理点击跳转至《Linux文件系统管理》
文件系统管理
3.5文件和目录的权限1.文件的权限用于控制进程对系统中文件和目录的访问
权限的三个级别
文件主、同组用户、其他用户
每个文件都有唯一的属主
普通文件的执行
读、写、可执行
不可写文件也有可能被删除
可执行文件:
(1)程序文件(可执行文件)
(2)脚本文件:文本文件
默认的解释程序为/bin/bash
可以在脚本文件的第一行自行指定解释程序,必须是第一行
#! /bin/bash
脚本程序运行时,其实是解释程序创建了一个进程
2.目录的权限目录的读写权限:
(1)读权限:若无读权限,那么目录表文件不许读,ls会失败
(2)写权限:若无写权限,目录表文件不许写。
写权限包括在该目录中创建文件、删除文件、文件重命名,这些都会修改目录文件
而修改文件会修改i节点。
目录无写权限不是指目录下的所有文件禁止写。
目录的x权限(执行权限):
有执行权限意味着分析路径名过程中可检索该目录
例如cat /a/b/c,要求/、/a 、/a/b三个目录都有执行权限,并且c文件有读权限。 ...
React学习笔记
点击跳转至《React学习-Ref》
点击跳转至《React学习-路由》
点击跳转至《React学习-配置代理》
点击跳转至《React学习-消息订阅》
点击跳转至《React学习-Hooks》
点击跳转至《React学习-Redux》
React学习-Redux
Reduxredux介绍1、redux是一个专门用于做状态管理的JS库
2、它可以用在react、vue、angular等项目中,但基本与react配合使用
3、作用:集中式管理react应用中多个组件共享的状态
redux工作流程
.rqeomeuqnhmg{zoom:100%;}
redux的三个核心概念1.action
动作对象
包含两个属性
type:标识属性,值为字符串,唯一,必要属性
data: 数值属性,值类型任意,可选属性
例如: {type:’init’ , data:{name:’Tom’,age:18}}
2.reducer
用于初始化状态,加载状态
3.store
Redux的核心API
