当前位置: 首页 > article >正文

湘潭大学软件工程算法设计与分析考试复习笔记(四)

回顾

  • 湘潭大学软件工程算法设计与分析考试复习笔记(一)
  • 湘潭大学软件工程算法设计与分析考试复习笔记(二)
  • 湘潭大学软件工程算法设计与分析考试复习笔记(三)

前言

现在是晚上十一点,我平时是十一点睡觉的,但是今天确实一天都没有复习这个,我还是想复习一下。所以还是复习一下吧。

现在复习的是程序填空,一空四分,四十分,也就是说十个空。这个这么难,好像老师是说看大家造化了哈哈哈。

第三道大题是算法设计与分析,前面三篇笔记是复习了一下第一道大题,也就是对算法的大概的理解。第三道大题主要是分治法,解决实际问题(上台阶,电梯),分析时间复杂度,求一个序列中特殊性质的元素,数塔求最大的,最小的和,最优路径,tsp 问题,(这个之前不知道是啥问题,现在大概知道了一些,就是图论题)

10+40+xx+15=100

好吧。那就是这样子了,考试重点就是这些了。现在开始复习程序填空。

计划

有个朋友和我说,她先看课件,然后最后再复习程序填空,先有一个框架,感觉确实是这样,那我也先复习后面的那个算法设计比较好。程序填空确实范围比较大。还有一点就是课件上面的代码我得下载下来才能复制里面的内容,之后方便的时候再操作一下。

分治

前面老师画的重点有提到分治解决各种问题,分治,我现在不看课件对这个概念的理解比较浅显:就是把一个比较复杂的问题分解成为很多子问题,一步一步划分,直到划分到我们能够处理,好像听起来很简单,在现实生活中其实非常非常难,因为我们是有感情的人类,我们在分解任务的时候会有情绪,然后会因为各种各样的原因做不到。

概述

有八个小节,容量上面还是比较多的。课件是第二章,我们前面大致复习了一下 4 5 7 这三个章节。复习完第二章,就算真正的复习完一半了,今天是周三,离考试不到一周的时间了。另外有个朋友联系我让我发一些资料给他,哈哈哈,其实我也没有什么资料,和他一样也是慌的一批地准备期末考试,但是就算害怕也要装作无所谓的样子。

递归

按照我的理解就是,最开始给定的 n 是不能直接解决的问题,比如说一开始让造一个火箭,递归就是问能不能造一个火箭头,不能,然后能不能造个啥,不能,…,最后问,能不能帮忙拧一下这个螺丝钉?可以,那就是所谓的递归出口。

递归形式

  • 多变元递归
  • 多步递归
  • 嵌套递归
  • 联立递归

上面这些一个都看不懂,好像也不会考。考应该是考怎么解决实际问题,时间复杂度是多少。看这种复杂的东西真的看不进去。

实例

在这里插入图片描述
这页课件有朋友在很早之前就问过我,可惜我看不懂。
在这里插入图片描述
常数和系数没搞懂,指数那块感觉是这样推导的。

递归小结

递归的时间复杂度可以看到是指数级别的,在很多情况下都是不可接受的。或者说比较难。

分治基本思想

在这里插入图片描述
我就一直感觉什么分治,递归,贪心,动态规划,都很像,它不像那些复杂的数据结构或者图论,完全是一些看不懂的代码,这几个更像是一种内功,就是表现出来非常朴素,但是里面蕴含的思想是非常深刻的。
在这里插入图片描述
只看的懂这个,就是画一棵二叉树,根节点是 n-m ,往下一层全是 n-m-1 ,再往下一层全是 n-m-2 ,一直画下去,最后减小到 1 ,分治结束,从 1n-m 一共有 n-m 层,又因为是二叉树,所以时间复杂度是 O(2^(n-m))

棋盘覆盖问题

这个是很经典的递归的问题,很明显我是一直没有学会的那一批,被这种题折磨得痛苦不堪,其实也还好,因为下意识远离这个题了,没有直面它,之前问过老师这个题,给我发了很多条信息,我似懂非懂。oj 或者网上的刷题网站有很多变体,什么贴瓷砖之类的。

后记

复习到这儿,明天再继续复习。


http://www.kler.cn/a/402908.html

相关文章:

  • 基于CNN+RNNs(LSTM, GRU)的红点位置检测(pytorch)
  • Wekan看板安装部署与使用介绍
  • C语言的文件函数
  • react中useMemo的使用场景
  • GPTZero:高效识别AI生成文本,保障学术诚信与内容原创性
  • 【Linux】-学习笔记04
  • 【数据结构-表达式解析】力扣227. 基本计算器 II
  • SpringBoot中的restTemplate请求存在乱码问题的解决
  • 从熟练Python到入门学习C++(record 1)
  • 【数据结构OJ】【图论】图综合练习--拓扑排序
  • java八股-SpringCloud微服务-Eureka理论
  • Ubuntu 26.04 LTS 大升级:Qt 6 成为未来新引擎
  • 【Vue】Vue3.0(二十五)Vue3.0中的具名插槽 的概念和使用场景
  • 基于Qt智能物流管理系统的开发与应用
  • Ubuntu Linux使用前准备动作 安装vim编辑工具
  • 3D Gaussian Splatting在鱼眼相机中的应用与投影变换
  • java 增强型for循环 详解
  • 【漏洞复现】Wordpress Wholesale Market文件读取漏洞
  • 解决在Ubuntu 20.04中使用PyCharm时无法输入中文的问题
  • Linux性能优化之火焰图的起源
  • 【网络】网络抓包与协议分析
  • 【运维项目经历|048】Terraform 云基础设施自动化部署项目
  • 01.01、判定字符是否唯一
  • apache中的Worker 和 Prefork 之间的区别是什么?
  • 第一讲,Opencv计算机视觉基础之计算机视觉概述
  • 力扣——动态规划