摘要:
1.回溯法的理解 回溯法是按照深度优先遍历,穷举所有算法的可能性,然后通过一些限界函数或者是剪枝函数判断当前的点是否符合条件。一旦不符合条件就返回上一个状态,省下了往下探索的时间。 2.学习算法这门课程,思考问题的思维得到了很大的提升。学习到了很多算法,解决问题的方法又变多了。改变了以往的思考方式, 阅读全文
摘要:
1.对贪心算法的理解 贪心算法作出在当前看来问题的最好选择。贪心算法并不是从整体考虑最优解,而是从局部出发选择的最优解。虽然对所有问题不一定是整体的最优解,但是在很多情况下都是整体最优或者是接近最优解。贪心算法,最重要的是找到这个问题的贪心策略,然后用反证法,替代法证明其正确性。 2.删数问题 问题 阅读全文
摘要:
1. 单调递增最长子序列 单调递增最长子序列可以从这个找到的这个序列的最后一个数着手。设置一个一维数组m[i],表示以第i个数为结尾的最长序列。m[i]=max{m[j]}+,i>j且a[i]>a[j]。遍历i之前的位置,即0-i-1,找到符合条件的元素。最后再遍历数组m,找到最大值即为所求。 1. 阅读全文
摘要:
实践题目:最大子列和问题 问题描述: 最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给定整数序列的最大子列和。1, N2, ..., NK 阅读全文
摘要:
本章总共上机两次。首先是最大子列和的问题。刚看到这道题目的时候,只是会想到用那种前面一直加然后再比较的想法,这种思想十分复杂。在老师的说明下,了解到用二分的方法,分别找出左边和右边的最大值,然后再看是否跨界的为最大。其实也算是一种子问题的划分。第一次算法上机的时候,我和同伴都是慌张的。以前上机的话, 阅读全文
摘要:
算法第二章主要学习了递归算法和分治的思想。递归算法是指直接或者间接的调用自身的算法,最重要的一点是要有终止条件,一般由if语句执行。分治思想是指将一个难以直接解决的较大的问题,分割成一些比较小规模的相同的问题。 首先学习了递归的经典例题,斐波那契数列,当满足n>1时,这个数列的第n项的值是它前面两项 阅读全文
摘要:
本学期我将选用的代码规范是Goole代码规范,具体参考的是这篇博客https://blog.csdn.net/freeking101/article/details/78930381 关于数学之美这本书,的确让我感受到了数学的伟大以及设计的范围特别广。我阅读的是图论与网络爬虫的那一部分。因为之前在暑 阅读全文
摘要:
心得: 第八节排序,感觉不太陌生。没接触之前以为是很简单的排序,上了课之后在发现有很多很多种排序的方法。这节里面的排序方法要掌握下来,不可能只靠课堂上的学习。在课堂的笔记结合书本,会更加好的理解到各种算法的效率。但是很多算法就很容易会混淆,现在还是处于一种没法看到排序的名字,就能想起来他的方法,内容 阅读全文
摘要:
1、typedef struct 和struct 的区别 struct Studen1 { int ID; char name; }stu1; typedef struct Student2 { int ID; char name; }stu2; Student1是结构体的名字,stu1是一个变量, 阅读全文
摘要:
邻接矩阵 #define MNNum 100//最大顶点数 typedef char VerTexTypre;//顶点的数据类型 typedef int ArcType;//顶点的权值类型 typedef struct { VerTexType vexs[MVNum];//顶点表 ArcType a 阅读全文