摘要: 回溯算法理解: 其实这个算法,本质上可以说是一个决策树的遍历过程。在做题的时候只需要考虑这三个步骤 1.路径 已经做出的选择 2.选择列表 就是当前可以做的选择 3.结束条件 即到达决策树的底层 就那全排列问题来说: 我们backtrack函数就像一颗指针,在树上游走,每当走到树的底层,其路径就是一 阅读全文
posted @ 2019-12-19 00:25 FITZ陈思宇 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 一:对贪心算法的理解 与上一章动态规划相比,我认为贪心算法就是最简化的一种动态规划,由于具有贪心选择的性质,保证子问题只会计算一次,不会被多次计算,所以在拿到题目时,想要用贪心法,一定要先判断该问题的是否满足无后效性。 贪心算法的简单性在于 每次只在当前做最简单的选择而不考虑子问题的结果(所以使用前 阅读全文
posted @ 2019-11-21 18:40 FITZ陈思宇 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 实践题目: 给定k 个排好序的序列, 用 2 路合并算法将这k 个序列合并成一个序列。 假设所采用的 2 路合并算法合并 2 个长度分别为m和n的序列需要m+n 1 次比较。试设 计一个算法确定合并这个序列的最优合并顺序,使所需的总比较次数最少。 为了进行比较,还需要确定合并这个序列的最差合并顺序, 阅读全文
posted @ 2019-11-13 23:51 FITZ陈思宇 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 一:对动态规划的理解 动态规划具备一下三个特点: 把原来的问题分解成了几个相似的子问题。(强调“相似子问题”) 所有的子问题都只需要解决一次。(强调“只解决一次”) 储存子问题的解。(强调“储存”) 一个很简单的例子就是斐波那契数列,在画出树形结构的时候发现很多分支都存在重复计算 动态规划通过巧妙的 阅读全文
posted @ 2019-11-03 16:46 FITZ陈思宇 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 问题描述: 给定一个由 n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形 的顶至底的一条路径(每一步可沿左斜线向下或右斜线向下),使该路径经过的数字总和最大。 算法描述: 这是一道很明显的动态规划问题。面对动态规划问题,我们必须找到递归方程 状态转移方程为dp[i][j] = a[ 阅读全文
posted @ 2019-10-20 17:32 FITZ陈思宇 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 来讲一下学习分治法的体会 分治法 即为 divide conquer 很容易了解他的目的性:把大问题分解为若干个子问题,分别解决并合并。看似简单,但很多情况下是非常有实用性的。 但是并不是所有情况都能用分治法,下面就我的理解写一些分治法适用的情况: 1. 该问题分解出来的子问题是互相独立的,不存在交 阅读全文
posted @ 2019-10-13 22:33 FITZ陈思宇 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 实践题目: 已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列A0, A1…AN 1的中位数指A(N 1)/2的值,即第[(N+1)/2]个数(A0为第1个数)。 输入格式说明:输入分3行。第1行给出序列的公共长度N(0 b[rb])return b[rb]; el 阅读全文
posted @ 2019-09-19 17:31 FITZ陈思宇 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 谷歌的代码规范 一:头文件 头文件应该能够自给自足(self contained,也就是可以作为第一个头文件被引入),以 .h 结尾。至于用来插入文本的文件,说到底它们并不是头文件,所以应以 .inc 结尾。不允许分离出 inl.h 头文件的做法. define保护:所有头文件都应该使用 defin 阅读全文
posted @ 2019-09-07 17:27 FITZ陈思宇 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 关于字符串操作的相关函数 + 我们知道,在编写程序时,了解一定数量的函数,能让你节省不少时间。同时,理解c++或者c语言内部的函数原理也有助于我们进一步理解编程的思想。 字符串的操作的基本函数: 1. strcpy(p, p1) 复制字符串 2. strncpy(p, p1, n) 复制指定长度字符 阅读全文
posted @ 2019-04-19 21:38 FITZ陈思宇 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 学习指针的时候,预习部分做的不够充分,课上存在的知识漏洞也没有及时弄懂,导致指针这一章节的学习走了许多弯路。 如cpp9编程第三题 在主函数中输入10个整数到数组中,调用函数完成将数组循环移动k位(要求函数参数为⑴数组名 ⑵数组元素的个数 ⑶循环移动的位数k)。当K>0时,实现循环右移;当K<0时, 阅读全文
posted @ 2018-12-07 12:37 FITZ陈思宇 阅读(131) 评论(0) 推荐(0) 编辑