算法综合设计实验题解

news2024/9/19 10:36:02

题目不分先后顺序,仅以个人做题顺序为准。

21 合并两个有序链表

正常可使用双指针法遍历,但还可以用递归实现。

60 排序序列

试画出递归树,发现第 m m m 层分支下有 ( n − m ) ! (n-m)! (nm)! 个情况。于是可以依次考察 k k k ( n − 1 ) ! (n-1)! (n1)! 1 ! 1! 1! 的模 r r r,其为剩余数字按顺序的第 r r r 个。分析边界问题:确定倒数第2位时,也确定了最后一位,即 1 ! = 1 1!=1 1!=1 同时序数从 0 0 0 开始。
此即逆康托展开。

143 重排链表

经典链表算法的结合:①快慢指针法找到链表中间结点;②对中间节点以后的部分进行三指针迭代翻转;③交错合并两个链表。
(注:分割链表时前链表尾指针需维护或指向空)

233 数字 1 的个数

数学题,关键在于正确写出计数表达式:
⌊ n 1 0 i + 1 ⌋ 1 0 i + min ⁡ { max ⁡ { n ( m o d   1 0 i + 1 ) − 1 0 i + 1 , 0 } , 1 0 i } . \lfloor \frac{n}{10^{i+1}}\rfloor10^i+\min\{\max\{n({\rm mod}\ 10^{i+1})-10^i+1,0\},10^i\}. 10i+1n10i+min{max{n(mod 10i+1)10i+1,0},10i}.

342 4 的幂

掩码 (mask) 题: 2 2 2 的幂二进制中至多有 1 1 1 位为 0 0 0;在此基础上 4 4 4 的幂二进制中 1 1 1 只能出现在低位开始的偶数位上。

55 跳跃游戏

不难发现导致无法抵达终点的只有出现数字 0 0 0 的情况,反向遍历并记录所需跨度,最终跨度大于 1 1 1 等效于起点数字为 0 0 0

134 加油站

正向遍历,若 x x x 无法抵达 y + 1 y+1 y+1,那么 x x x y y y 间的任何一点也都不可能抵达 y + 1 y+1 y+1,从而剪支。
但还可以采用反向遍历,转而考虑额外油量需求:不存在解时需求为正;存在解时出发点一定为使得需求最小的点。

135 分发糖果

可以转而考察递增递减序列:递增序列中下一位比上一位多 1 1 1,递减序列中每多一位则前面所有位均多 1 1 1 (即增加序列长度值)。
边界情况:不增不减时,序列结束;递减序列长超过前面递增序列长时,递增序列的末位视为递减序列的初位。

605 种花问题

当前位置和前后位置都为 0 0 0 时待种花数 − 1 -1 1,待种花为 0 0 0 时可直接返回以剪支。

46 全排列

回溯,全部数字选完时抵达叶子结点,载入记录每层剩余数字情况。

51 N 皇后

回溯,以行为分支,列为深度;递归遍历时判断是否合法,仅当合法时写入Q;判断合法时仅需判断列、左上、右上。

77 组合

回溯,全部数字选完时抵达叶子结点,载入遍历起点。

70 爬楼梯

动规入门, f ( n ) = f ( n − 1 ) + f ( n − 2 ) f(n)=f(n-1)+f(n-2) f(n)=f(n1)+f(n2)

124 二叉树中的最大路径和

回溯,叶子结点返回 0 0 0,根节点返回根值与左右子树值中最大的和。根节点处最大值可能为:①左右子树最大值与根植和;②子树中的最大值。

997 找到小镇的法官

图论入门,即找到入度为 n − 1 n-1 n1 的顶点。

148 排序链表

归并:①快慢指针法找到链表中间结点;②合并两个有序链表。
(注:分割链表时前链表尾指针需维护或指向空)

62 不同路径

不难发现路径数为 ( n + m − 2 m − 1 ) = ( n + m − 2 n − 1 ) {n+m-2 \choose m-1}={n+m-2 \choose n-1} (m1n+m2)=(n1n+m2)

53 最大子数组和

f ( i ) f(i) f(i) 为以 i i i 位置结尾的最大子数组和,即求 max ⁡ { f ( i ) } i = 1 n − 1 \max\{f(i)\}_{i=1}^{n-1} max{f(i)}i=1n1;不难发现 f ( i − 1 ) ≤ 0 f(i-1)\leq 0 f(i1)0 时, f ( i ) = n u m s [ i ] f(i)={\rm nums}[i] f(i)=nums[i]

797 所有可能路径

DFS,深搜。

198 打家劫舍

动规, f ( i ) = max ⁡ { f ( i − 2 ) + n u m s [ i ] , f ( i − 1 ) } f(i)=\max\{f(i-2)+{\rm nums}[i],f(i-1)\} f(i)=max{f(i2)+nums[i],f(i1)}

621 任务调度器

贪心,按任务出现次数从最大到最小排布。

23 合并 K 个升序链表

分治,每层合并相邻的两个链表。

95 不同的二叉搜索树 II

二叉搜索树左子树值一定都比根节点小,右子树值一定都比根节点大,由此进行递归。

120 三角形最小路径和

自下向上原地修改数组, f ( i , j ) = min ⁡ { f ( i + 1 , j ) , f ( i + 1 , j + 1 ) } + t r i [ i ] [ j ] f(i,j)=\min\{f(i+1,j),f(i+1,j+1)\}+{\rm tri}[i][j] f(i,j)=min{f(i+1,j),f(i+1,j+1)}+tri[i][j];由于出发点唯一, f ( 0 , 0 ) f(0,0) f(0,0) 即为所求。

1446 重复规划路线

遍历结点集,使用 “1” 标记原方向边,使用 “0” 标记反方向边;从 “0” 出发 dfs,遇到 “1” 边则修改数量 + 1 +1 +1

327 区间和个数

线段树,动态区间查询。

654 最大二叉树

单调栈。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2141493.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

超声波测距

基本原理:超声波测距是通过发射超声波到物体表面再反射回来,通过测量声波传播的时间来计算距离的方法。 公式解释: ( L C \times T ) ( L ):距离(从发射头到接收头的总距离)( C ):声波的传播速…

汉王手写签批控件如何在谷歌、火狐、Edge等浏览器使用

背景 近日,有网友咨询汉王手写签批控件是否可以通过allWebPlugin中间件技术加载到谷歌、火狐、Edge等浏览器?为此,笔者详细了解了一下汉王手写签批控件,它是一个标准的ActiveX控件,曾经主要在IE浏览器使用,…

Spring为什么要用三级缓存解决循环依赖?

Spring为什么要用三级缓存解决循环依赖? 1. Spring是如何创建一个bean对象2. Spring三级缓存2.1 一级缓存:单例池,经历过完整bean生命,单例Bean对象2.2 二级缓存:提前暴露的Bean2.3 三级缓存:打破循环 3. S…

【CMake】使用CMake在Visual Studio 构建多cpp文件项目

首先,我们在 C m a k e Cmake Cmake文件下写入以下代码: #需求的最低cmake程序版本 cmake_minimum_required(VERSION 3.12)#本工程的名字 project(OpenGL)#支持的C版本 set(CMAKE_CXX_STANDARD 20)#本工程主程序文件及输出程序名称,生成exe …

TriangleIcon 鸿蒙ArkTS自定义View 实现带颜色的上下箭头

TriangleIcon 鸿蒙ArkTS自定义View 实现带颜色的上下箭头 最近将公司项目中VUE实现的的一个数据看板模块进行了纯血鸿蒙的实现,里面有个效果就是 数据指标上升 一个绿色箭头朝上,数据指标下降一个红色箭头向下 具体的效果可以查看上图, 其中V…

Vue3 项目实战甄选硅谷

1.技术选型 2.搭建Vue3 项目使用pnpm 1.安装pnpm pnpm安装 npm i -g pnpm 2.项目初始化 pnpm create vite cd ./project pnpm i pnpm run dev 初始化完成 3.项目开始之前先对项目进行一些配置 1.想让刚启动项目浏览器自动打开 找到 2.eslint配置 1.安装eslint pnpm…

FloodFill(洪水灌溉)算法专题——DFS深搜篇

1、图像渲染 . - 力扣(LeetCode) 1.1 算法原理 从(sr,sc)位置开始上下左右暴搜,将区域中符合条件的值修改为color。细节问题:当 color image[sr][sc]时,不需修改,直接返回即可。 1.2 算法代码 class Sol…

C++初阶:STL详解(三)——vector的介绍和使用

✨✨小新课堂开课了,欢迎欢迎~✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C:由浅入深篇 小新的主页:编程版小新-CSDN博客 前言: 前面我们刚刚了解了strin…

STM32外设之LTDC/DMA2D—液晶显示(野火)

文章目录 显示屏有几种?基本参数控制?显存 LTDC 液晶控制器LTDC 结构框图LTDC 初始化结构体 LTDC_InitTypeDefLTDC 层级初始化结构体 DMA2D 图形加速器DMA2D 初始化结构体 要了解什么 屏幕是什么,有几种屏,有什么组成。 怎么控制,不同屏幕控…

FastGPT一站式解决方案[2-应用篇]:轻松实现RAG-智能问答系统,AI工作流、核心模块讲解

FastGPT一站式解决方案[2-应用篇]:轻松实现RAG-智能问答系统,AI工作流、核心模块讲解 1.FastGPT快速使用:基本设置、核心模块讲解 1.1 知识库设置 首先我们需要创建一个知识库。 知识库创建完之后我们需要上传一点内容。 上传内容这里有四种模式: 手动输入:手动输入问…

php部署到apach服务器上遇到的问题

php部署到apach服务器上遇到的问题 问题描述解决方案 问题描述 参考环境搭建文章: 链接: Windows本地搭建PHP环境 第六步的第二条中出现无法正常访问http://localhost:8888/index.php的情况。 解决方案 思路:之前的http://localhost:8888是可以正常访…

收购芯片设计公司Annapurna Labs后

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

Linux-mysql5.7-mysql8.0安装包下载及安装教程,二合一

一、安装包下载 1、手动下载 MySQL :: Download MySQL Community Server 2、wegt下载 wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz 登录自己的liunx ,复制上面的命令下载。 二、手动安装 1、上传压缩包到…

Tomcat端口号被占用

1.当启动了Tomcat后再打开idea运行web项目下的Tomcat就会报这个“Tomcat端口号被占用”错误,解决办法就是关闭Tomcat(用tomcat文件里面的shutdown.bat关闭,也可以在exe程序里面关闭),再在idea中运行web项目下的Tomca …

华为OD机试真题-九宫格按键输入-2024年OD统一考试(E卷)

最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷D卷C卷)_华为od机试题库-CSDN博客 题目描述 九宫格按键输入,有英文和数字两个模式,默认是数字模式,数字模式直接输出数字,英文模式连…

在typescript浏览器端中调用C++编写的函数,WebAssembly传递指针类型的参数,以及处理指针类型的返回值。

首先要在Cmake工程中的cmakelists.txt文件中引入Emscripten工具链&#xff1a; set(CMAKE_TOOLCHAIN_FILE "D:/CppPkg/emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake")直接看C代码&#xff1a; #include <emscripten/emscripten.h> #i…

服务器——装新的CUDA版本的方法

服务器——装新的CUDA版本 一、进入 CUDA 版本列表二、根据自己服务器&#xff0c;选择对应的版本和配置三、使用管理员用户&#xff0c;运行下载和安装命令四、查看显卡驱动是否安装4.1 若安装了显卡驱动4.2 若显卡驱动没安装 参考文章 一、进入 CUDA 版本列表 CUDA Toolkit …

MFC工控项目实例之十七添加手动测试界面

承接专栏《MFC工控项目实例之十六输入信号验证》 1、在JogTest.h文件中添加代码 class CJogTest : public CDialog { public:CJogTest(CWnd* pParent NULL); // standard constructorCButtonST m_btnStart[16];CFont m_font; ... } 2、在JogTest.cpp文件中添加代码 #…

【医药行业】实施SAP有哪些医药行业GXP的合规要求和注意事项

作为实施过辉瑞和赛诺菲医药行业的项目&#xff0c;总结了如下&#xff1a; 在医药行业中&#xff0c;GxP&#xff08;Good Practices&#xff0c;良好规范&#xff09;是一系列标准与指南&#xff0c;旨在确保制药、医疗设备和生物制品的质量与合规性。GxP包括多个领域&#x…

计算机网络通关学习(一)

简介 之前我通过王道的考研课进行了计算机网络的学习&#xff0c;但是在秋招准备过程中发现之前的笔记很多不足&#xff0c;学习的知识不够深入和巩固&#xff0c;所以再重新对《图解HTTP》&《图解TCP/IP》进行深度学习后&#xff0c;总结出了此篇博客&#xff0c;由于内容…