- 博客(8)
- 收藏
- 关注
原创 类的基础知识
1、定义抽象数据类型类的基本思想是数据抽象(接口——用户能执行的操作 实现)和封装(接口和实现的分离)成员函数的声明必须在类的内部,但定义既可以在内部也可以在外部,作为接口组成部分的非成员函数,定义和声明都在类的外部 定义在类内部的函数时隐式的inline函数定义成员函数:引入this:当调用成员函数时,其实是在替某个对象调用它,成员函数通过名为this的额外的隐式参数访问调用他的对...
2023-05-15 11:12:47 283 1
原创 c++数组
所有C++11的都没看数组:1、数组声明(就是create):类型+数组名+元素个数(整形常数或const或常量表达式,就是不能是变量)short months[20];在声明语句中初始化数组元素int yamcosts[3] = {20, 30, 5};,如果没有初始化数组,元素值是不确定的,那么元素的值就是分配的位置上以前元素的值,初始化时也可以float hotel[5] = {5.0...
2023-05-15 11:10:21 293 1
原创 动态规划基础
1、常用模型 背包问题 就是有N个物品(有体积和价值两种属性)放进体积为V的背包,最终要使总价值最大1、01背包问题 每个物品最多只能用一次(也就是0和1)动态规划从两个方面考虑:状态表示——就是想想用几维的状态表示 例如背包问题中的状态就是f(i,j)其中i,j是价值和体积状态计算——就是如何能一步步把每一个状态算出来dp问题的优化一般是对动态规划的代码或方程做等价变形 所以做的...
2020-06-16 11:36:53 258
原创 宽度优先搜索初步总结
使用宽搜的情况图的遍历(层级遍历、拓扑排序、连通分量——灌水法)、简单图的最短路径(从一个状态变成另一个状态)最短路径用DP也行,最长路径用DP DFS二叉树BFS步骤1、创造一个队列,把起始节点放在里面2、while队列不空,处理队列中的节点,并扩展出新的节点(将队列中取出点的所有邻居都加进去,比如for所有neighbor )3、for 上一层的节点拓展下一层的节点,且要保存que...
2019-08-27 17:46:06 350
原创 二叉树与分治法初步总结
处理二叉树某个节点时是通过O(1)的操作将规模为n的问题分解为两个规模为n/2的问题,即T(n)=2T(n/2)+O(1)=O(n) 即使该节点两个分叉不均匀也是O(n)如果用O(n)的操作的话时间复杂度就是O(nlogn) 每层的操作时间均是O(n) 画树形图分析二叉树遍历:前序遍历——根左右 中序遍历——左根右 后序遍历——左右根递归三要素:1、递归的定义:递归做了什么事情 这样...
2019-08-27 11:51:00 446
原创 二分法初步总结
T(n)=T(n/2)+O(1)=O(logn)(把式子展开就能得到结果,最终变为T(n)=T(1)+O(logn)) 通过O(1)的时间,把规模为n的问题变为n/2补充:T(n)=T(n/2)+O(n)=O(n) O(1+2+4+…n)=O(2n-1)O(logn)几乎都是二分法 O(nlogn)一般可能要排序 O(2^n)与组合有关的搜索 O(n!)与排列有关的搜索破...
2019-08-26 21:11:46 319
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人