自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (3)
  • 收藏
  • 关注

原创 图形学基础-变换

图形学基础-变换2D transformations: rotation, scale, shearHomogeneous coordinates(齐次坐标)Composite transform(变换复合)3D transformations(3D变换)Viewing (观测) transformation(视图变换相关)View (视图) /Camera transformation (视图变换)Projection (投影) transformationOrth

2020-09-07 21:01:53 264 1

原创 Bolt介绍及基于其的实例

Bolt介绍概要Variables-----变量容器,包含变量名称,变量类型,值,不同类型的变量容器可在不同作用域内被调用。Types—每个Unit和Variables都有类型,支持导入自定义类型。Unit-----组成Graph的基本单元。Group—对unit分组管理的工具。Graph----由Unit组成的流程图或由状态组成的状态图。包含Flow Graph和State Graph.Machine—支持执行Graph的组件。包含Flow Machine与 State Machine.Bo

2020-09-01 15:12:17 1974 1

原创 二叉树的遍历

关于二叉树的遍历深度优先遍历先序遍历,先访问根节点,再访问子树。中序遍历,先访问左子树(右子树),再访问根节点,后访问右子树(左子树)。后序遍历,先访问子树,再访问根节点。广度优先遍历层次遍历,优先访问离根节点近的节点。对于树节点的定义struct TreeNode{ TreeNode* left; TreeNode* right; int val; TreeNode(int t = 0):val(t),left(nullptr),right(null

2020-08-16 12:31:55 140

原创 反转链表

反转链表双指针递归方式struct ListNode{ ListNode* next; int val; ListNode(int t=0):val(t),next(nullptr){}};ListNode* reverseList(ListNode* node){ ListNode *head = nullptr; //利用头插法进行反转 //head指向已反转好的第一个节点 //node指向未反转的第一个节点 //将node

2020-08-14 11:10:26 99

原创 进程间通信---如何避免竞争条件

进程间通信—如何避免竞争条件竞争条件:有两个或多个进程读写某些共享数据,而最后的结果取决于进程运行的精确时序,称为竞争条件(race condition)。进程间通信的三个问题:如何传递?如何确保两个或更多的进程在关键的活动中不会出现交叉?如何确保进程按正确的顺序?这三个问题中的两个问题对于线程来说是同样适用的,第一个问题(即传递信息)对线程而言比较容易,因为他们共享一个地址空间(在不同地址空间需要通信的线程属于不同进程之间通信的情形)。但是另外两个问题(需要梳理清楚并保持恰当的顺序)同样适

2020-07-18 11:29:04 716

原创 C++—— =delete和=default

C++—— =delete和=default  函数定义中末尾会带这两个表达式,这分别表示deleted function(弃置函数)和default function(默认函数)。其中=default仅对特殊成员函数与比较运算符函数 (C++20 起)允许。  特殊成员函数:默认构造函数复制构造函数移动构造函数 (C++11 起)复制赋值运算符移动赋值运算符 (C++11 起)析构函数  比较运算符函数:==、!=、<、<=、> 和 >=。(形如,ope

2020-07-16 08:12:52 451

原创 最大连续子数组和与积

最大连续子数组和与积和问题描述:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。暴力求解法  对于一个整数数组,他所有的连续子树组的个数可以通过归纳求得:以第1个元素为首的连续子数组有n个;以第2个元素为首的连续子数组有n-1个;……以第n个元素为首的连续子数组有1个;因此总共有:sum=∑i=1

2020-06-28 21:50:42 247

原创 STL算法与数据结构---堆有关操作以及优先队列

STL算法与数据结构—堆有关操作以及优先队列本文将STL中的堆有关算法,做了些整理,以及扒出了它的源代码(去除了许多不必要的版本控制代码),并简单的注释了他们的大概运行过程。除示例代码以外,其余代码,均可以在GNU7.2.0中找到。堆操作汇总Heap operations,Defined in header <algorithm>is_heap(C++11)checks if the given range is a max heap (function templa

2020-05-27 15:14:58 298

原创 LeetCode-1277统计全为 1 的正方形子矩阵

LeetCode-1277统计全为 1 的正方形子矩阵题目:给你一个 m * n 的矩阵,矩阵中的元素不是 0 就是 1,请你统计并返回其中完全由 1 组成的 正方形 子矩阵的个数。这是一个动态规划问题,有一些值得注意的地方。动态规划的思想就是将当前问题,拆成子问题,并且由子问题的值组合得到当前问题的值。这样我们就可以通过遍历小问题,得到我们想要的大问题的值。通常小问题的值,是很容易求得的。一般来说,我们经常会保存最优值来组合得到更大问题的值。在这个问题中,最优值对求解更大问题的值却没有帮助,因此我们

2020-05-24 22:30:07 353 1

原创 python 基础2

python 基础2一些python基础知识,以防忘记。以下除了代码部分,大部分都来自与python官方文档,有许多删减,少许是与C++的比对。逻辑值检测任何对象都可以进行逻辑值的检测。一个对象在默认情况下均被视为真值,除非当该对象被调用时其所属类定义了 __bool__() 方法且返回 False 或是定义了 __len__() 方法且返回零。 1下面基本完整地列出了会被视为假值的内置对象:被定义为假值的常量: None 和 False。任何数值类型的零: 0, 0.0, 0j, Decim

2020-05-22 14:01:27 132

原创 python基础1

python基础1一些python基础知识,以防忘记行与缩进python使用缩进来表示代码块,不需要使用大括号eg:# 判断条件没括号if True: print(1)else: print(2)# while循环写法while True: print(1)多行语句Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠来实现多行语句。#不缩进对齐也行,最好缩进对齐total = item1 + \ item2 + \ ite

2020-05-21 09:29:20 124

原创 堆、堆排序与优先队列

堆、堆排序与优先队列堆(heap)  堆(Heap)是计算机科学中一类特殊的数据结构。堆通常用数组来实现。把堆近似看作一棵完全二叉树(最底层可能不是完全填满的,如下图),堆中结点的值总是不大于或不小于其父结点的值。  根结点最大的堆叫做最大堆或大根堆。  根结点最小的堆叫做最小堆或小根堆。  最小堆示例:  表示堆的数组AAA有两个属性:A.lengthA.lengthA.lengt...

2020-04-26 17:18:10 130

原创 0-1背包问题

0-1背包问题背包问题(Knapsack Problem)  问题描述:一个旅行者准备随身携带一个背包,可以放入背包的物品有nnn种,物品jjj的重量和价值分别为wj,vj,j=1,2,…,nw_j,v_j,j=1,2,…,nwj​,vj​,j=1,2,…,n,如果背包的最大重量限制是bbb,怎样选择放入背包物品以使得背包的价值最大?  这是一个组合优化问题,设xjx_jxj​表示装入背包的...

2020-04-23 09:21:23 595

原创 C/C++中基本的内存管理工具

C/C++中基本的内存管理工具new操作符以及相应的操作符函数new/delete,new[]/delete[]  对于new/delete,new[]/delete[],他们均为C++的运算符。他们的使用:string *sp = new string;//单个对象string *arr = new string[10];//10个对象delete sp;delete[] ar...

2020-04-18 20:23:53 359

原创 矩阵链相乘问题

矩阵链相乘问题  问题描述:考虑nnn个矩阵的乘积:A1A2…AnA_1A_2…A_nA1​A2​…An​,确定最优的乘法顺序(最优括号化方案),使得标量(数值)乘法次数最少。其中,AiA_iAi​为$ p_{i-1}⨯pi矩阵,矩阵,矩阵,i=1,2,…,n$。  对于两矩阵元素相乘,结果矩阵的每一个元素,由原先两矩阵的行列对应元素相乘。因此,假设假设A1为m×nA_1为m\times nA...

2020-04-03 17:16:45 987

原创 最长公共子序列问题

最长公共子序列问题  问题描述:给定两个序列X,YX,YX,Y(可以把它们视作字符串),求他们的最长公共子序列。例如X="BCAB",Y="BDACB"X="BCAB",Y="BDACB"X="BCAB",Y="BDACB",其最长公共子序列为BCB,BABBCB,BABBCB,BAB。一个给定序列的子序列,就是将给定序列零个或多个元素去掉之后的序列。例如X="BAC"X="BAC"X="BAC...

2020-04-02 11:01:17 92

原创 钢条切割问题

钢条切割问题问题描述:给定一段长度为n英寸的钢条和一个价格表pi(i=1,2……,n)p_i(i=1,2……,n)pi​(i=1,2……,n),求切割钢条方案,使得收益rnr_nrn​最大。(假设切割工序本身没有成本支出)价格表样例:长度iii12345678910价格pipipi1589101717202430假设收益长度为n...

2020-04-01 21:09:49 160

原创 机器学习基本概念

机器学习基本概念基本术语样本(sample)/示例(instance): 对事物的抽象化描述李明:(学号=“201610311”, 专业=“计算机”, 年龄=“23”)xix_ixi​: (xi1x_{i1}xi1​; xi2x_{i2}xi2​;xi3x_{i3}xi3​)属性(attribute)/特征(feature): 事物某方面的描述(一个样本可以有多种属性)学...

2020-03-16 17:19:56 170

原创 lambda表达式

lambda表达式lambda表达式的定义​ 对于可调用的解释:对于一个对象或一个表达式,如果可以对其使用调用运算符(调用运算符为()),则称它为可调用的。即,如果e是一个可调用的表达式,则我们可以编写代码e(args),其中args是一个逗号分隔的一个或多个参数的列表。​ 一个lambda表达式表示一个可调用的代码单元。我们可以将其理解为一个未命名的内联函数。与...

2020-03-10 23:51:25 326

原创 STL-迭代器中的traits

STL-迭代器中的traits​ STL中算法通过迭代器访问容器时,有时不仅仅需要知道元素是什么,还想用到元素的相应类型(声明一个变量之类)。STL中利用traits编程技巧来实现。它通过在每一种迭代器中声明了类型名。再通过iterator_traits来萃取类型。最终通过iterator_traits来获取类型。​ 为什么要通过iterator_traits来获取类型?这是因为,原生指针...

2020-02-22 13:14:57 118

原创 unordered_map&&unordered_set

unordered_map&&unordered_set底层实现​ 在STL中,C++11引入了unordered_map、unordered_set、unordered_multimap、unordered_multimap。尽管不是名字不是哈希表,但是底层仍然是。相比于map等,这个查找的平均时间更加快。看看它的底层实现(l来自《STL源码剖析》)://以下是基于gnu...

2020-02-20 14:51:22 157

原创 Map&&Set

STL- Map&&SetRB_Tree​ 非公开,这是map,set的底层支撑。它在STL中的实现: struct _Rb_tree_node_base { typedef _Rb_tree_node_base* _Base_ptr;//指向树节点的指针 typedef const _Rb_tree_node_base* _Const_Base_ptr...

2020-02-19 10:00:33 137 1

原创 STL-使用红黑树作为底层的原因简单解释

STL-使用红黑树作为底层的原因简单解释​ 在C++标准模板库中,map\set\mutimap\mutiset均是以红黑树作为底层来实现的。为什么要以红黑树来实现这些容器呢?二叉搜索树​ 二叉搜索树(也叫二叉排序树、二叉查找树)。二叉搜索树的定义较为简单。二叉搜索树就是根节点元素与左右子树所有元素的比较关系顺序。具体如大小关系,二叉搜索树就是根节点元素大于左子树的所有元素,小于右子树的...

2020-02-18 09:02:42 469

原创 list

list​ list,是用环状双向链表实现的。具体的的内存结构如下图:​ 其中需要解释的地方:1.end()指向的是一空白节点,用以实现STL前闭后开区间。2.前闭后开区间:在STL迭代器中,区间里要访问的元素一般采用[iterator1,iterator2)的表示方法。​ 一个list类中的数据成员是怎么样的呢?如下(g++,7.2.0)list_node *next;list...

2020-02-11 22:05:19 145

原创 deque

deque文档deque,她的意思为双端队列(double-ended queue)。逻辑上看,deque和vector都是连续空间。相比于vector只能从尾部增长元素,而deque可在双侧增加元素。但是从存储结构上,deque并非是连续空间存储的。它是分段连续的。对于vector存储(申请的内存)的增长,可以描述为三个步骤1.申请内存2.搬移元素3释放原先的使用的内存。而由于deque其特...

2020-02-09 11:38:35 785

原创 vector

vector使用​ 对于vector,它的存储结构和数组一样,连续空间。对于vector类型,它的数据成员有三个:iterator start;iterator finish;iterator end_of_storage;​ 其增长方式是两倍增长。由于存储空间连续,vector的迭代器本质上仍然是类型的指针。明白这点,以上三个数据成员就非常好理解。start,finsh分别表示正...

2020-02-08 09:25:21 248

原创 右值引用与移动构造函数

右值引用与移动构造函数文章目录右值引用与移动构造函数左值(lvalue)、右值(rvalue)、xvalue、prvalue、glvalue定义一些问题左值引用与右值引用测试移动构造函数、移动赋值Reference左值(lvalue)、右值(rvalue)、xvalue、prvalue、glvalue定义c++primer​ 这两个名词是从C语言继承过来的,原本是为了帮...

2020-01-12 15:03:19 290

原创 STL_string的使用

string的使用stringstring相当于basic_string,其中basic_string为字符串模板类,该模板提供了许多字符串类所需的成员以及方法,其中T为单个字符所属的类型。basic_string没有虚函数,这点和其他标准库类型一致,当需要设计更复杂的文字处理类时,可以用它加以实现。1.string的构造与析构-constructor and destructordefa...

2020-01-09 19:06:32 103

原创 关于char * 的初始化

char *的初始化问题描述:尝试STL中的string::copy函数时,引发了一个segment fault。如下#include <iostream>using namespace std;//显示变量名及其值#define showVar(x) showV(#x,x)template<typename T1,typename T2>inline voi...

2020-01-09 16:37:55 9006

原创 VSCode_C++_输出窗口中文乱码解决方案

VSCode_C++_输出窗口中文乱码C++常常要用到控制台输出一些调试信息,**但是由于代码本身的编码格式与控制台所用的编码格式不一致,就会导致控制台输出乱码。**基于此,可以有两种解决方案:更改代码文件的本身编码格式(UTF-8,GB2312等)最简单有效(建议采用这种方式)VSCode 底部状态框内有当前文件编码格式,将其修改为GB2312即可更改控制台的编码格式控制台默认的编码...

2020-01-07 11:10:38 7643 3

ch15_1.cpp

钢条切割问题_C++实现

2020-04-03

ch15_4.cpp

最长公共子序列问题

2020-04-03

ch15_2.cpp

矩阵链相乘C++实现

2020-04-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除