算法分析与设计复习笔记
插入排序
1. void insert_sort(int A[ ],int n)
2. {
3. int a,i,j;
4. for (i=1;i<n;i++) {
5. a = A[ i ];
6. j = i – 1;
7. while (j>=0 && A[j]>a) {
8. A[ j+1 ] = A[ j ];
9. j- -;
10. }
11. A[ j+1 ] = a;
12. }
13. }
合并两个有序的子数组
1. void merge(int A[ ],int p,int q,int r)
2. {
3. int *bp = new int[r-p+1]; // 分配缓冲区,存放被排序的元素
4. int i,j,k;
5. i = p; j = q + 1; k = 0;
6. while (i<=q && j<=r) { // 逐一判断两子数组的元素
7. if (A[ i ] <=A[ j ]) // 按两种情况,把小的元素拷贝到
8. bp[ k++ ] = A[ i++ ]; // 缓冲区*/
9. else
10. bp[ k++ ] = A[ j++ ];
11. }
12. if (i==q+1) // 按两种情况,处理其余元素
13. for (;j<=r;j++)
14. bp[++] = A[j]; // 把A[ j ]~A[ r ]拷贝到缓冲区
15. else
16. for (;i<=q;i++)
17. bp[++] = A[i]; // 把A[i]~A[q]拷贝到缓冲区
18. k = 0;
19. for (i=p;i<=r;i++) // 最后,把数组bp的内容拷贝
20. A[i++] = bp[k++]; // 到 A[p]~A[r]
21. delete bp;
22. }
i:开始合并时第一个序列的起始位置
s:合并前序列的大小
t:合并后序列的大小
合并排序算法
1. template <class Type>
2. void merge_sort(Type A[ ],int n)
3. { int i, s, t = 1;
5. while (t<n) {
6. s = t; t = 2 * s; i = 0;
7. while (i+t<n) {
8. merge(A,i,i+s-1,i+t-1); //i,i+s-1,i+t-1定义被合并的两个序列的边界。
9. i = i + t;
10. }
11. if (i+s<n)
12. merge(A,i,i+s-1,n-1);
13. }
14. }
- 汉诺塔(Hanoi)问题:
void Hanoi (char a, char b, char c, int n)
{
if ( n ==1 ) printf (“%c->%c”, a, b);
else{
Hanoi( a, c, b, n-1);
printf( “%c->%c”, a, b);
Hanoi(c, b, a, n-1);
}
}
阶乘函数可归纳定义为:
算法 计算阶乘函数 n!
1. int factorial(int n)
2. {
3. if (n==0)
4. return 1;
5. else
6. return n * factorial(n-1);
7. }
整数划分问题
用一系列正整数之和的表达式来表示一个正整数,称为整数的划分。
例:7 可划分为:
7
6 + 1
5 + 2,5 + 1 + 1
4 + 3,4 + 2 + 1,4 + 1 + 1 + 1
3 + 3 + 1,3 + 2 + 2, 3 + 2 + 1 + 1,3 + 1 + 1 + 1 + 1
2 + 2 + 2 + 1,2 + 2 + 1 + 1 + 1,2 + 1 + 1 + 1+ 1 + 1
1 + 1 + 1+ 1 + 1 + 1 + 1
上述任何一个表达式都称为整数 7 的一个划分。
2)正整数 n 的不同的划分个数称为正整数 n 的划分数,记为 p(n );
3)求正整数 n 的划分数称为整数划分问题。
1)定义两个函数:
r(n,m):正整数 n 的划分中加数含 m 而不含大于 m 的所有划分数;
q(n,m):正整数 n 的划分中加数小于或等于 m 的所有划分数。
例:在 7 的划分中:
含 6 而不含大于 6 的划分有:
6 + 1,因此,r(7,6)=1;
含 5 而不含大于 5 的划分有:
5 + 2,5 + 1 + 1,因此,r(7,5)=2;
含 4 而不含大于 4 的划分有:
4 + 3,4 + 2 + 1,4 + 1 + 1 + 1,因此,r(7,4)=3;
含 3 而不含大于 3 的划分有:
3 + 3 + 1,3 + 2 + 2, 3 + 2 + 1 + 1,3 + 1 + 1 + 1 + 1
因此,r(7,3)=4
4)递归式:
⑴ 由式 (4.1.1) 和式 (4.1.2) 可得下面递归关系:
⑵ 对所有的正整数 n, 有:
⑶ n 的划分不可能包含大于 n 的加数
⑷ 整数 1 只有一个划分,而不管 m 有多大
⑸
分治策略
将要求解的较大规模问题分割成若干个更小规模的子问题;
对这些子问题分别求解,如果子问题的规模仍不够小,则再划分为更小的子问题,如此递归的进行下去,直到问题规模足够小、很容易求出其解为止。
将求出的小规模的问题的解合并为一个更大规模的问题的解,自底向上逐步求出原来问题的解。
- 分治法所能解决的问题一般具有以下几个特征:
- 该问题的规模缩小到一定的程度就可以容易地解决;
- 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质;
- 利用该问题分解出的子问题的解可以合并为该问题的解;
- 该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。
快速排序的序列的划分算法
2. int split(Type A[ ], int low, int high)
3. { int k, i = low;
5. Type x = A[low];
6. for (k=low+1; k<=high; k++) {
7. if (A[k]<=x) {
8. i = i + 1;
9. if (i!=k) swap(A[i], A[k]);
11. }
12. }
13. swap(A[low], A[i]);
14. return i;
15. }
快速排序:
1. template <class Type>
2. void quick_sort(Type A[ ], int low, int high)
3. {
4. int k;
5. if (low < high) {
6. k = split(A, low, high);
7. quick_sort(A, low, k-1); //对左半段排序
8. quick_sort(A, k+1, high); //对右半段排序
9. }
10. }
贪婪法:
解向量:问题中n个元素的具体取值所构成的向量;
解空间:问题中n个元素的各种不同取值组合所构成的向量全体;
约束方程:问题中的限制条件所列出的方程;
目标函数:问题求解所要达到的目标;
可行解:满足约束方程的向量;
最优解:使目标函数达极值的向量。
性质: 最优子结构性质(动态规划也有该性质) 自顶向下

斐波那契

分治法: 优化原则或最优子结构性质, 自底向上, 划分子问题
- 分治法所能解决的问题一般具有以下几个特征:
- 该问题的规模缩小到一定的程度就可以容易地解决;
- 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质;
- 利用该问题分解出的子问题的解可以合并为该问题的解;
- 该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。
货郎担的动态规划函数

多段图动态规划函数:
资源分配问题

- 回溯法
- 回溯法是一个既带有系统性又带有跳跃性的搜索算法;
- 它在包含问题的所有解的解空间树中,按照深度优先的策略,从根结点出发搜索解空间树。——系统性
相关文章:
算法分析与设计复习笔记
插入排序 1. void insert_sort(int A[ ],int n) 2. { 3. int a,i,j; 4. for (i1;i<n;i) { 5. a A[ i ]; 6. j i – 1; 7. while (j>0 && A[j]>a) { 8. A[ j…...
vue-amap 高德地图
vue-amap是一套基于Vue 2/vue3和高德地图的地图组件 vue-amap 高德地图2.0版本的对应vue3...
Numpy基础练习
import numpy as np 1.创建一个长度为10的一维全为0的ndarray对象,然后让第5个元素等于1 n np.zeros(10,dtypenp.int32) n[4] 12.创建一个元素从10到49的ndarray对象 n np.arrange(10,50)3.将第2题的所有元素位置反转 n[::-1]使用np.random.random创建一个10*10的ndarray对象…...
一番赏小程序定制开发,打造全新抽赏体验平台
随着盲盒的热潮来袭,作为传统的潮玩方式一番赏也再次受到了大家的关注,市场热度不断上升! 一番赏能够让玩家百分百中奖,商品种类丰富、收藏价值高,拥有各种IP,从而吸引着各个圈子的粉丝玩家,用…...
【前端】将vue的方法挂载到window上供全局使用,也方便跟原生js做交互
【前端】将vue的方法挂载到window上供全局使用,也方便跟原生js做交互 <template><div><el-button click"start">调用方法</el-button></div> </template> <script> // import { JScallbackProc } from ./JScal…...
Oracle查询优化:高效实现仅查询前10条记录的方法与实践
在 Oracle 中,实现仅查询前10条记录的四种方法 1. 使用 ROWNUM 查询 ROWNUM 是 Oracle 中的伪列,用于限制返回的行数。 SELECT * FROM table_name WHERE condition AND ROWNUM < 10;condition:查询条件。ROWNUM < 10:限制…...
go语言编译问题
go编译 goproxy地址 阿里云 https://mirrors.aliyun.com/goproxy/七牛云 https://goproxy.cn/开源版 https://goproxy.io/nexus社区 https://gonexus.dev/启用 Go Modules 功能 go env -w GO111MODULEon配置 GOPROXY 环境变量,以下三选一 七牛 CDN go env -w …...
mobi文件转成pdf
将 MOBI 文件转换为 PDF 格式通常涉及两个步骤: 解析 MOBI 文件:需要提取 MOBI 文件的内容(文本、图片等)。将提取的内容转换为 PDF:将 MOBI 文件的内容渲染到 PDF 格式。 可用工具 kindleunpack 或 mobi࿱…...
MobaXterm解决中文显示乱码问题
1 问题 打开MobaXterm时,会显示中文乱码。 2 解决方法 右键点击会话,在弹出菜单中选择“编辑会话”,如下: 选择终端字体设置,如下: 字符集换成ISO-8859-1,如下: 网上有说用…...
西门子 SINAMICS G120 变频器借助 ProfiNet 转 EtherCAT 实现与汇川 H5U 通讯实例
一. 案例背景 随着智能制造理念的推进,设备之间的协同工作变得越来越重要。例如,在机器人自动化焊接生产线中,电机驱动的焊接机器人需要与其他设备协同工作,这就要求负责电机控制的变频器和控制整个生产线流程的PLC能…...
流媒体之linux下离线部署FFmpeg 和 SRS
前言 用户对网络做了限制,只能访问指定的网址,和没网没啥区别,导致无法连接外网,无法获取安装包,还有一些编译需要的开源工具 用户需要用平台查看库房的海康摄像头实时监控,只能在库房里一台纯净的ubantu…...
NOBLEROYCE罗慕路斯门窗 以精工匠造开启私属人生
公元前753年罗马建立,其创建者为罗慕路斯。以狼孩的传奇形象成为古罗马精神象征的罗慕路斯,不仅是罗马的第一任国王,还创建了罗马最初的政治制度,罗马的名字也是源于这位伟大的奠基人。NOBLEROYCE罗慕路斯,致敬这位人类…...
【算法day8】字符串:反转
主播今天脑子不好用,先写两题吧~ 题目引用 反转字符串中的单词右旋字符串 1.反转字符串 给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且…...
【C++进阶】第二节:多态
1、多态的概念 1.1 概念 多态的概念:通俗来说,就是多种形态。具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。 2、多态的定义及实现 2.1 多态的构成条件 多态是在不同继承关系的类对象,去调用同一函数&a…...
梯度下降法以及 Python 实现
文章目录 1. 引言2. 梯度法3. 例子4. 代码实现5. 讨论 — 学习率 η \eta η5.1 当 η \eta η 设置过大5.2 当 η \eta η 设置过小 参考 1. 引言 梯度下降法,可以根据微分求出的斜率计算函数的最小值。 在人工智能中,经常被应用于学习算法。 2. 梯…...
Postman cURL命令导入导出
你是否曾为在Postman和终端之间切换、整理请求而抓狂?其实,Postman支持与cURL命令的无缝互通,通过导入导出,极大提升效率。用好这个功能,分分钟让接口测试更高效! Postman如何快速导入cURL命令?…...
Java 在Json对象字符串中查找和提取特定的数据
1、在处理JSON数据时,需要提出个别字段的值,通过正则表达式提取特定的数据 public static void main(String[] args) {//定义多个JSON对象字符串类型,假设每个对象有a,b,c 字段String strJson "{\"a\":1.23,\"b\"…...
synchronized的特性
1.互斥 对于synchronized修饰的方法及代码块不同线程想同时进行访问就会互斥。 就比如synchronized修饰代码块时,一个线程进入该代码块就会进行“加锁”。 退出代码块时会进行“解锁”。 当其他线程想要访问被加锁的代码块时,就会阻塞等待。 阻塞等待…...
领域泛化与领域自适应
领域泛化(Domain Generalization)和领域适应(Domain Adaptation)是机器学习领域中处理不同数据分布场景下模型训练与应用的两种策略,领域泛化在泛化到目标领域时不需要进行调整,而领域自适应在适应到目标领…...
使用aspx,完成一个转发http的post请求功能的api接口,url中增加目标地址参数,传递自定义header参数
使用aspx,完成一个转发http的post请求功能的api接口,url中增加目标地址参数,传递自定义header参数 首先,简单实现一下,如何在ASPX页面中实现这个功能实现代码说明:注意事项: 然后进阶࿰…...
ScintillaNET:打造专业级代码编辑器的终极Windows Forms解决方案
ScintillaNET:打造专业级代码编辑器的终极Windows Forms解决方案 【免费下载链接】ScintillaNET A Windows Forms control, wrapper, and bindings for the Scintilla text editor. 项目地址: https://gitcode.com/gh_mirrors/sc/ScintillaNET ScintillaNET是…...
别再死磕MIG了!ZYNQ PS端DDR3做帧缓存,用VDMA+HP接口实战指南
ZYNQ视频处理架构革命:VDMAHP接口实战全解析 从传统FPGA到ZYNQ的思维转换 在传统FPGA视频处理项目中,工程师们早已习惯使用MIG IP核管理DDR控制器,通过用户接口实现帧缓存功能。这种模式在纯FPGA环境中运行良好,但当转向ZYNQ平台…...
PDF文本高效提取:用pdftotext实现秒级文档内容解析
PDF文本高效提取:用pdftotext实现秒级文档内容解析 【免费下载链接】pdftotext Simple PDF text extraction 项目地址: https://gitcode.com/gh_mirrors/pd/pdftotext 破解PDF提取痛点:为什么你需要专业工具? 每天面对数十份PDF文档却…...
[双重嵌入架构]:实现高精度人脸生成的AI解决方案
[双重嵌入架构]:实现高精度人脸生成的AI解决方案 【免费下载链接】IP-Adapter-FaceID 项目地址: https://ai.gitcode.com/hf_mirrors/h94/IP-Adapter-FaceID 1. 技术原理:双重嵌入架构的创新突破 1.1 并行特征处理机制 IP-Adapter-FaceID Plus…...
5个实战技巧深度解析:XUnity.AutoTranslator如何革新Unity游戏多语言体验
5个实战技巧深度解析:XUnity.AutoTranslator如何革新Unity游戏多语言体验 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator作为一款创新的开源实时翻译插件,为…...
Phi-3-mini-128k-instruct与智能车仿真:生成自然语言控制逻辑与调试报告
Phi-3-mini-128k-instruct与智能车仿真:生成自然语言控制逻辑与调试报告 最近在折腾一个智能车仿真项目,发现一个挺有意思的事儿:让AI来帮忙写控制逻辑和看报告,效率提升了不少。以前我们得手动把“绕过前面那个障碍物࿰…...
手把手教你解决MMLab中ImportError: cannot import name ‘set_random_seed‘错误
深度解析MMLab中set_random_seed导入错误的本质与系统化解决方案 当你第一次在MMLab生态中遇到ImportError: cannot import name set_random_seed from mmdet.apis这个错误时,可能会感到困惑和沮丧。这个看似简单的导入错误背后,实际上反映了开源计算机视…...
若依框架下,如何让JimuReport积木报表乖乖认你的登录状态?(附完整前后端代码)
若依框架与JimuReport深度整合:实现无缝登录状态管理的全链路实践 在当今企业级应用开发中,权限控制与单点登录已成为基础需求。当我们将若依(RuoYi)这一流行后台管理系统框架与JimuReport报表工具集成时,如何确保两者间的登录状态无缝衔接&a…...
从 0 手写一个巡检调度系统(五):接入大模型实现巡检问题解读与修复建议
摘要:在既有「架构巡检 → 问题落库」链路中,第一次引入大模型能力:对单条 issue 做「解读 修复建议」,要求输出可解析的结构化 JSON 并落库可追溯。本文记录选型、配置、HTTP 客户端、Prompt 约束与踩坑,便于同类业务…...
# 智能合约安全实战:重入攻击原理与防御机制详解(Solidity + Foundry)在以太坊生态中,**智能合约的安全性
智能合约安全实战:重入攻击原理与防御机制详解(Solidity Foundry) 在以太坊生态中,智能合约的安全性直接决定项目的生命线。近年来频繁爆发的漏洞事件表明,即使是看似简单的逻辑也可能埋藏致命隐患。其中,…...
