- 博客(21)
- 收藏
- 关注
原创 2021-11、1-11、7周报
递归: 使用递归的情况: 1.问题的定义时递归的 例如,阶乘就是上一个数的阶乘乘以当前数本身 2.问题的解法存在自调用(算法直接或间接地调用自身) 例如:折半查找法 使用递归的要点: 1.问题具有可借用类同自身的子问题的性质 2.确定递归终止条件 实例: 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 有效括号组合需满足:左括号必须以正确的顺序闭合。 示例 1: 输入:n = 3 输出:["((()))","(()())","(())()","()(())",
2021-11-07 15:53:38 127
原创 10.25-10.31周博客
动态规划: dp一般用于解决多阶段决策问题。每个阶段都要做一个决策,全部的决策组成一个决策序列,要你求一个最好的决策序列使得这个问题有最优解 一、适用动态规划解决的问题: 1.计数问题:解决问题有多少种方案 2.优化问题:求最大值或最小值问题 二、使用DP的要求 1.最优子结构 2.重复子问题:求解子问题时,会出现重复计算(overlapping)。如果没有重复计算,则退化成分治算法(divide and conquer) 3.无后效性:调用子问题最优解时,子问题的最优解不发生改变。 三、动态规划的使用方法
2021-10-31 13:47:00 143
原创 力扣51题题解
n皇后问题:将n个皇后放置在 n×n 的棋盘上,皇后彼此之间不能相互攻击。 给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。 每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。 皇后彼此不能相互攻击,也就是说:任何两个皇后都不同行、不同列,也不在同一对角线上。 这里的“对角线”指的是所有的对角线,不只是平分整个棋盘的那两条对角线。 解题思路: 借用树的思维弄清解题步骤: 假定n=3,三个皇后分别为Q1、Q2、Q3 在第一行,有3种放置方
2021-09-30 14:13:48 169
原创 数据结构——图
1.稠密图的基本实现: #ifndef UNTITLED1_DENSEGRAPH_H #define UNTITLED1_DENSEGRAPH_H #include #include #include using namespace std; class DenseGraph{ private: //n是图中节点个数,m是边数 int n,m; //directed指明图是有向的还是无向的 bool directed; vector<vector> g; public: DenseGrap
2021-06-07 13:38:40 113
原创 数据结构——二叉树
(一)二叉树的基本实现 1.二叉树的定义: import java.util.*; //BST支持泛型,因为每个节点都大于它的左孩子,小于它的右孩子,所以保存的元素得要是可比较的 public class BST<T extends Comparable> { //定义内部节点类 private class Node{ public T e; public Node left; public Node right; //节点类的构造函数 public N
2021-05-30 12:22:07 82
原创 数据结构——栈和队列
一、栈 (一)栈的基本实现 接口Stack: public interface Stack { int getSize(); boolean isEmpty(); void push(T e); T pop(); T peak(); } ArrayStack继承Stack这个接口,使用之前定义过的Array类: public class ArrayStack implements Stack{ //基于数组实现 Array<T> array; //构造函数,初始化对栈的容量 public A
2021-05-18 11:10:02 131
原创 数据结构——动态数组
数据结构 一、数组 简单的时间复杂度分析 O:运行时间和输入数据之间的关系(渐进时间复杂度) O(1):线性关系 O(n^2):T=knn+b
2021-05-14 18:26:11 418
原创 第二章
线性表的抽象数据类型定义: 2-4线性表的顺序表示和实现 顺序表的存储结构: 顺序表中基本操作的实现: 1.顺序表的初始化: 2.顺序表的取值: 3.顺序表的查找: 4.顺序表的插入: 5.顺序表的删除: 2-5线性表的链式表示和实现 单链表的存储结构: 首元结点、头结点、头指针: 头结点的作用: 1.使首元结点能像其它结点一样处理 2.便于空表和非空表的统一处理 单链表基本操作的实现: 1.初始化: 2.取值: 3.查找 4.插入: 5.删除: 创建单链表: 1.前
2021-02-09 22:19:35 101
原创 第一章
1-2基本概念和术语 1、 数据:能输入到计算机中并被计算机程序处理的符号的总称 数据元素:数据的基本单位,通常作为一个整体进行考虑和处理,如学生基本信息表中一名学生的信息 数据项:组成数据元素的最小单位,如学生的学号、姓名 数据对象:性质相同的数据元素的集合,是数据的一个子集,如学生基本信息表 2、数据结构 数据结构:相互之间存在一种或多种关系的数据元素的集合 结构:数据元素间的关系 数据结构包括逻辑结构和存储结构两个层次 逻辑结构: 要素:数据结构和关系 分类:集合结构:数据元素除了在同一集合外无其他关
2021-02-09 21:32:45 90
原创 第十三章 拷贝控制 466
13-1拷贝、赋值与销毁 1、拷贝构造函数 拷贝构造函数的第一个参数必须是引用类型,一般都是const引用,也可以是非const引用 合成拷贝构造函数 如果我们没有为一个类定义拷贝构造函数,编译器会为我们定义一个。即使我们定义了其它构造函数,编译器也会为我们合成一个拷贝构造函数 对某些类来说,合成拷贝构造函数用来组织我们拷贝该类类型的对象 合成的拷贝构造函数会将其参数的成员逐个拷贝到正在创建的对象中 编译器从给定对象中依次将每个非static成员拷贝到正在创建的对象中 类类型成员会使用拷贝构造函数来拷贝,
2021-01-31 18:20:11 190
原创 第十二章 动态内存 426
12-1动态内存与智能指针 动态内存的管理通过一对运算符来完成: new:在动态内存中为对象分配内存空间并返回一个指向该对象的指针,可以选择对对象初始化 delete:接受一个动态对象的指针,销毁该对象,并释放与之关联的内存 两种智能指针: shared_ptr允许多个指针指向同一个对象 unique_ptr“独占”所指的对象 标准库还定义了一个名为weak_ptr的伴随类,它是一种弱引用,指向shared_ptr所管理的对象 三种类型都定义在头文件memory中 1、shared_ptr类 智能指针也是模
2021-01-29 23:26:05 91
原创 第十一章 关联容器 400
两个主要的关联容器:map、set map中的元素是 关键字—值 对 set中只有关键字 标准库提供8个关联容器,8个容器的不同体现在三个方面: (1)是map 还是 set (2)要求不重复关键字 还是 不允许重复关键字——容器名前加multi (3)有序 还是 无序——容器名前加unordered 11-1使用关联容器 使用map map类型通常通常被称为关联数组 单词计数程序: 定义map必须指定关键字和值得类型 string作为下标,每读取一个word,如果word还未在map中,下标运算符会创
2021-01-26 21:29:57 90
原创 第十章 泛型算法 362
10-1概述 标准库算法find 传给find的前两个参数是表示元素范围的迭代器,第三个参数是要搜索的值 如果搜索成功,则返回第一个与给定值相等的迭代器 如果搜索失败,则返回find的第二个参数 算法如何工作 只要有一个迭代器可以用来访问元素,find就完全不依赖于容器类型(甚至无需理会保存元素的是不是容器) 迭代器令算法不依赖于容器,但算法依赖于元素类型的操作 10-2初始泛型算法 1、只读算法 一些算法只会读取输入范围中的元素,而不会改变其值 例如find、count、accumulate accum
2021-01-25 15:10:34 182
原创 第九章 顺序容器 318
9-1顺序容器概述 所有顺序容器都提供了快速访问的功能,同时它们可能的缺点是: 向容器中添加或从容器中删除不方便 不按顺序访问不方便 9-2容器库概览 有的操作不是所有容器都提供的,每个容器都定义在头文件中 对容器可以保存元素类型的限制 1、迭代器 forward_list不支持递减运算符(–) 迭代器的算术运算只能应用于string、vector、array、deque 迭代器范围 迭代器范围由一对迭代器表示,比如begin和end、first和last 使用左闭合范围的编程假定 使用如下:
2021-01-22 22:49:55 112
原创 第八章 IO库 304
8-1IO类 iostream定义用于读写流的基本类型 fstream定义读写命名文件的类型 sstream定义读写内存string对象的类型 为支持宽字符的语言
2021-01-21 09:57:29 211
原创 第七章 类 253
7-1定义抽象数据类型 我们不能访问Sales_item类的数据成员,因为根本不知道这个类有哪些数据成员 1、设计Sales_data类 2、定义改进的Sales_data类 改进前的Sales_data包括: string bookNo;//书名 unsigned units_sold;//销售数量 double revenue;//总销售收入 改进后: 相比原来添加了combine、isbn、avg_price 成员函数的声明必须在类的内部,它们的定义则既可以在内部也可以在外部 作为接口组成部
2021-01-20 21:15:15 98
原创 第六章 函数 207
6-1函数基础 返回类型 函数名字( 形参列表) { 函数体 } 空形参列表 void f( ){ /…/}//隐式地定义形参列表 void f(void){/…/}//显式地定义形参列表 1、局部对象 形参和函数体内部定义的变量统称为局部变量 自动对象:只存在于块执行期间的对象 局部静态对象: ctr被定义为局部静态变量,第一次调用时值为1,第二次是2,以此类推,直到输出10 如果ctr不是静态变量,每次都只会输出1 2、函数声明 函数声明也称作函数原型,包括返回类型,函数名,形参列表 3、分离式编译
2021-01-18 22:21:26 281
原创 第五章 语句
5-1简单语句 空语句 分号不要漏写也不要多写 v1=v2+v3; ;//看似非法,实际是由一个简单语句和一个空语句构成 while遇到第一个分号结束,此语句错误 复合语句 复合语句是由花括号括起来的语句和声明的序列,也叫做块。 复合语句也可能为空 { }//空块 5-2语句作用域 在if,while,for,switch中定义的变量,只在相应语句内部可用 5-3条件语句 1、 if,if else,嵌套if均较熟悉 悬垂else:else与离它最近的且尚未匹配的if匹配 使用花括号 ...
2021-01-17 15:52:51 70
原创 第二章
int,long,long long的表示范围不一样 无符号数一定大于0;有符号数可正可负 long和double表示的精度不一样 带负号的无符号数要把负数转化成无符号数 8位有符号二进制的模是256(-128——127) 8位无符号二进制的模是256(0——255) ...
2021-01-09 10:39:37 77
原创 2021-01-05
统计数据出现的次数 #include int main() { int v1,v2,count=1; if(std::cin>>v1) { while(std::cin>>v2) { if(v2==v1) count++; else { std::cout<<v1<<“appears”<<count<<“times”<<std::endl; v1=v2; count=1; } } std::cout<<v1<
2021-01-05 10:53:01 63
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人