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

回顾

前言

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

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

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

cpp 复制代码
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 或者网上的刷题网站有很多变体,什么贴瓷砖之类的。

后记

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

相关推荐
緈福的街口2 分钟前
【leetcode】144. 二叉树的前序遍历
算法·leetcode
GG不是gg7 分钟前
排序算法之基础排序:冒泡,选择,插入排序详解
数据结构·算法·青少年编程·排序算法
姝孟25 分钟前
学习笔记(C++篇)—— Day 6
笔记·学习
随意起个昵称29 分钟前
【双指针】供暖器
算法
倒霉蛋小马33 分钟前
最小二乘法拟合直线,用线性回归法、梯度下降法实现
算法·最小二乘法·直线
codists1 小时前
《算法导论(第4版)》阅读笔记:p82-p82
算法
埃菲尔铁塔_CV算法1 小时前
深度学习驱动下的目标检测技术:原理、算法与应用创新
深度学习·算法·目标检测
霸王蟹1 小时前
React Fiber 架构深度解析:时间切片与性能优化的核心引擎
前端·笔记·react.js·性能优化·架构·前端框架
~巴哥~1 小时前
mcp学习笔记
笔记·学习
冰菓Neko1 小时前
盒带自编教材《软件工程》目录
软件工程