自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 unity 游戏开发之路(一)

unity的项目的结构:项目:包含整个工程所有的内容,表现为一个目录场景:一个虚拟的三维空间,表现为一个文件游戏对象:场景中进行互动的元素,有些游戏对象是单独的一个文件,有些不是组件:组成游戏对象的构件,有些组件时单独的文件,如脚本资源:项目中用到的内容,可以构成组件的一部分unity资源目录下的特殊目录信息:Editor:该目录下的脚本被视为编译器脚本,为unity编译器添加功能而使用,在运行或者发布的时候都不可用Editor Dafault Resources:为编辑器脚本提供动态

2022-01-02 17:53:15 2097

原创 TCP/IP学习之路(六)

传输层之前提到,TCP/IP传输层包含很多有用的协议,能够提供数据在网络中传输所需要的必要寻址信息。传输层充当了网络中应用程序与网络之间的接口。并且能够把网络数据传递给特定的应用程序。端口和套接字在TCP/IP系统中,应用程序可以使用端口号通过TCP或UDP协议模块指定数据目的地。端口是一个预定义的内部地址,充当从应用程序到传输层或是从传输层到应用程序之间的通路。例如,客户端计算机通常利用TCP端口21来访问服务器上的FTP程序。进一步观察传输层这种与应用程序相关的寻址机制,就会发现TCP和UDP数

2020-09-06 15:34:29 207

原创 TCP/IP学习之路(五)

子网划分和CIDR

2020-09-06 09:35:57 114

原创 高等排序

高等排序之前我们了解了一些复杂度为O(n^2)的低效率排序算法。但是当我们面对庞大的输入数据时,这些初等算法就显得没有什么实用价值了。不过,只要运用我们在前面一章所学的递归与分治法的编程技巧,就可以实现更加高效的算法。本篇仍以之前的例题来结合说明。例题:将给出的一串数字按照从小到大的顺序排,在第1行输入定义数组长度的整数N(N<10000),在第2行输入N个整数,以空格隔开,输出N个整数。例如输入:1 5 3 4 7 9 8输出:1 3 4 5 7 8 9归并排序归并排序,是创建在归并操

2020-09-06 09:06:57 134

原创 递归与分治法

将问题分解,通过求解局部性的小问题来解开与原本的问题。这种技巧称为分治法,我们在很多算法中都能看到。这个算法的步骤如下:1.将问题"分解“成局部问题2.递归地求解局部问题3.将局部问题地解”整合“,解决原问题穷举搜索例题:现有长度为n地数列A和整数m。请编写一个程序,判断A中任意几个元素相加是否能够得到m。A中每个元素中能使用1次.数列A以及用作问题的q个m,由外界输入,请对每个问题输出yes或no输入:第1行输入n,第2行输入代表A的n个整数,第3行输入q,第4行输入q个整数m。输出:输

2020-09-04 09:02:43 290

原创 TCP/IP学习之路(四)

上一篇讲到,在一个网段(例如一个局域网)上的计算机之间能够在网络访问层使用可用的物理地址进行通信。那么,从北京到上海的电子邮件如何准确到达目的地呢?本篇会讲到网际层上的协议提供局域网网段之外的传递。寻址与发送上一篇讲到,计算机通过网络接口设备(例如网络适配器)与网络进行通信,网络接口设备具有唯一的物理地址,用于接收发向该地址的数据。像以太网网卡这样的设备对于上层协议层的细节是一点也不了解的,它不知道IP地址,也不知道发送来的帧是要给SSH还是FTP,它只是监听发来的数据帧,等待去往自己物理地址的数据帧,

2020-09-03 10:45:28 143

原创 搜索问题

搜索是指从数据集合中找出目标元素的处理,与排序相同,搜索的各元素通常也由多个项目组成。本篇例题:从长为N一组数组中找出特定的数M,输出M所在的下标,若没找到该数请输出-1例如输入:871 2 4 6 7 8 5 3输出:4线性搜索线性搜索就是从数组开头开始顺次访问各元素,检查该元素是否与目标值相等。一旦相等则返回该元素的位置并结束搜索。如果检查到数组末尾仍未发现目标值,则返回一个特殊值来说明结果。线性搜索的算法效率很低,但适用与任何形式的数据代码#include<iostream&

2020-09-03 09:13:20 1179

原创 TCP/IP学习之路(三)

上一篇大概介绍了TCP/IP协议栈的结构,这一篇重点讲一下协议栈的底层,即网络访问层。网络访问层与OSI模型由于OSI模型经常作为一种通用框架来理解各种协议系统。在讨论网络访问层时,OSI术语和概念相当常见,因为OSI模型对网络访问的宽泛分类提供了进一步的细分,因而更好地揭示了这一层地内部运行情况。TCP/IP网络访问层大致对应于OSI的物理层和数据链路层。OSI层负责把数据帧转化为适合与传输介质的比特流。也就是说,OSI物理层管理和同步实际传输的电子或模拟脉冲。在接收端,物理层把这些脉冲重新组合为数据

2020-09-02 17:44:52 79

原创 排序问题

排序就是将数据按一定顺序重新排列。它是许多算法的基础,可以让数据变得更容易处理。本篇将整理一些相对基础的排序算法。以下算法都是以解答例题的形式说明。例题:将给出的一串数字按照从小到大的顺序排,在第1行输入定义数组长度的整数N(N<10000),在第2行输入N个整数,以空格隔开,输出N个整数。例如输入:1 5 3 4 7 9 8输出:1 3 4 5 7 8 9插入排序法要点:1.取出未排序部分的开头元素赋给变量v2.在已排序部分,将所有比v大的元素向后移动一个单位3.将以取出的元素v插入

2020-09-02 16:57:50 350

原创 TCP/IP学习之路(二)

TCP/IP的工作方式TCP/IP协议系统划分为不同层次的组件,下面的图表描述了官方的TCP/IP协议层及其功能当TCP/IP协议软件准备通过网络传递数据时,发送端计算机上的每一层协议都在数据上添加层信息,对应于接收端计算机上相应的层。当数据在协议栈里传递时,这些报头信息被逐步去除。TCP/IP和OSI模型网络业界针对网路协议架构有一个标准的7层模型,称为“开放系统互连”模型,OSI模型在TCP/IP模型的基础上进行了进一步的划分,对比如下图所示:物理层:把数据转换为传输介质上的电子流或模拟脉

2020-08-25 14:52:59 76

原创 TCP/IP学习之路(一)

什么是TCP/IPTCP/IP是一个协议系统,它是一套支持网络通信的协议集合。再弄清楚这个概念之前,让我们先来了解一下什么是网络和协议。网络和协议网络是计算机或类似计算机的设备之间通过常用传输介质进行通信的集合。无论计算机如何连接,计算机之间的通信过程都需要将来自于其中一台计算机的数据,通过传输介质传输到另一台计算机。网络协议就是一套通用规则系统,用来帮助定义网络通信的复杂过程。网络协议指导着数据从一台计算机上的应用程序发出,通过操作系统的网络组件,去往网络硬件,然后跨越传输介质,通过目的计算机的网络

2020-08-25 13:31:39 153

原创 并查集的经典例题(三)

题目:营救题目描述妈妈下班回家,街坊邻居说小明被一群陌生人强行押上了警车!妈妈丰富的经验告诉她小明被带到了 t 区,而自己在 s 区。该市有 m 条大道连接 n 个区,一条大道将两个区相连接,每个大道有一个拥挤度。小明的妈妈虽然很着急,但是不愿意拥挤的人潮冲乱了她优雅的步伐。所以请你帮她规划一条从 s 至 t 的路线,使得经过道路的拥挤度最大值最小。输入格式第一行有四个用空格隔开的 n,m,s,t,其含义见【题目描述】。接下来 m 行,每行三个整数 u,v,w,表示有一条大道连接区 u 和区 v,且

2020-07-27 20:59:53 461

原创 并查集的经典例题(二)

题目:村村通题目描述某市调查城镇交通状况,得到现有城镇道路统计表。表中列出了每条道路直接连通的城镇。市政府 “村村通工程” 的目标是使全市任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要相互之间可达即可)。请你计算出最少还需要建设多少条道路?输入格式输入包含若干组测试测试数据,每组测试数据的第一行给出两个用空格隔开的正整数,分别是城镇数目n和道路数目 m;随后的 m行对应 m 条道路,每行给出一对用空格隔开的正整数,分别是该条道路直接相连的两个城镇的编号。简单起见,城镇从 1 到 n

2020-07-27 14:11:39 779

原创 并查集的经典例题(一)

例题:亲戚题目背景:若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。题目描述:规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚。如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也都是x的亲戚。输入格式:第一行:三个整数n,m,p,(n<=5000,m<=5000,p<=5000),分别表示有n个人,m个亲戚关系,询问p对亲戚关系。以下m行:每行两个数Mi,Mj,1<=Mi,Mj<=N

2020-07-25 13:41:27 1485 1

原创 蓝桥杯出现过的基本算法---并查集

由于最近需要准备蓝桥杯的c++组比赛,所以特地整理出了一些在蓝桥杯中出现的算法,方便复习并查集1. 作用在遇到一道题之后,我该如何判断该题需要使用到并查集呢?首先我们应该先了解这个并查集是干什么的:并查集是一种树形数据结构,用于处理一些不相交集合的合并及查询问题。也就是说,当题目中出现让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。这个时候我们往往就需要考虑构建并查集。2. 基本操作并查集的基本操作有两种:1. 合并 2. 查

2020-07-24 22:13:58 661

原创 数据结构 栈(C语言)

栈是一种十分常见的数据结构,其特点是每次只对栈顶的元素进行出栈(减少)或入栈(增加)。这样做可以确保栈中除栈顶的数据不会被改动,并且在一些场合中十分适用,例如括号匹配问题。顺序栈栈通常分为两种,第一种是顺序栈。顾名思义它是一整块连续的空间组成,类似于数组。其实可以把它理解为只能在头部进行增删操作的数组。在创建顺序站之前我们先来思考顺序栈由什么组成,首先我们需要一个数组,一个指向栈顶部的指针,...

2020-03-02 21:06:04 324

原创 c++ 运算符重载(下)

本篇主要介绍几种常用的运算符重载自增运算符++和自减运算符–自增和自减运算符都是单目运算符,它们都分为前置和后置两种类型,那么我们要如何区分呢?class Point {private: int x, y;public: Point(int i = 0, int j = 0) { x = i; y = j; } void Show() { cout <&lt...

2019-12-01 19:36:09 129

原创 c++运算符重载(上)

参考书籍:面向对象程序设计(c++)运算符重载的规则运算符重载为友元函数运算符重载为成员函数几种常用的运算符重载当编译器无法完成一些我们想要实现的功能的时候,例如(坐标之间的相加),这时候我们就需要自己去定义运算符。运算符重载的规则运算符重载的格式重载运算符函数的一般格式为:T operator +(int a,int b){return a+b;}T为返回类型,op...

2019-12-01 19:09:55 130

原创 数据结构 图(一)

参考书籍:数据结构(c语言版)图的定义和术语图的定义和术语在图形结构中,结点之间的关系可以是任意的,图中任意两个元素之间都可能相关。由此,图的应用极为广泛,特别是近年来的迅速发展,已渗入到诸如语言学、逻辑学、物理、化学、电讯工程、计算机科学以及数学的其他分支之中去。首先我们来看一下图的一些属于以及基本概念。顶点:在图中的数据元素通常称做顶点有向图:顶点之间存在顺序,通常以...

2019-11-21 16:12:09 888 2

原创 数据结构 层序遍历二叉树

层序遍历,顾名思义就是按照每一层的顺序从左至右打印二叉树。有二种算法实现此功能,我们重点讲如何用队列实现void FloorOrderTraverse(Sequeue &S,BinTree &B){ BinTree e; if (B != NULL) { Enqueue(Q, B); //头结点入队 } while (IsEmptyQueue(Q...

2019-11-18 16:39:14 248

原创 数据结构 非递归后续序遍历二叉树

非递归后续二叉树较中序遍历要复杂一些,因为栈存结点时不能简单的通过判断结点是否存在来进行出栈操作(父结点也会出栈)。所以我们需要设置一个数组来检查代码如下:void InOrderTraverse(Stack &S,BinTree& B) { int tag[20]; int i = 0; InitStack(S); BinTree p = B; while (p !...

2019-11-16 12:21:36 161

原创 数据结构 非递归实现中序遍历二叉树

参考书籍:c++ 数据结构之前提到用递归的方法实现中序遍历二叉树,但是递归会浪费大量的空间与时间。这时候我们就在想用没有一种方式能够不依赖递归去实现遍历二叉树。我们之前学过一种数据结构可以实现这种方法,那就是链表。话不多说,我们先上代码://非递归遍历二叉树void InOrderTraverse(Stack &S,BinTree& B) { InitStack(S);...

2019-11-16 10:59:09 1087

原创 c++ 虚函数与多态性(下)

虚函数虚析构函数当程序用delete运算符通过基类指针删除派生类对象时,会发生一种情况:系统会只执行基类的构造函数,而不执行派生类的析构函数。程序中先调用了派生类的析构函数,有调用了基类的析构函数。当基类的析构函数为虚函数时,不论指针指的是同一族的哪一个对象,系统都会采用动态关联,调用相应的析构函数,对该对象进行清理工作。纯虚函数和抽象类纯虚函数有时在基类中将某一成元函数声明为虚函数,...

2019-11-15 19:28:11 116

原创 c++ 虚函数与多态性

参考书籍:面向对象程序设计第二版多态性概述虚函数纯虚函数和抽象类多态性概述多态的类型(1)重载多态:前面所学的构造函数重载属于重载多态,后面将详细介绍。(2)强制多态:指将一个变量类型加以变化,以符合一个函数或者操作的要求。例如加法运算符在进行浮点数与整形树相加时,首先要对整型数进行强制类型转换为浮点数再相加的情况,就是强制多态的实例。(3)包含多态:同样的操作可用于一个类型及...

2019-11-15 18:50:56 226 1

原创 c++ 数据结构(树)

树的一些基本定义树的结点——包含数据结构及若干指向其子树的分支结点的度——结点拥有的子树终端结点(叶子)——度为0的结点非终端结点(分支结点)——度不为0的结点树的度——树内各结点的度的最大值孩子——结点的子树兄弟——同一个双亲的孩子互相之间互称兄弟祖先——从根到该结点所经分支上的所有结点层次——从根开始定义起,根为第一层,根的孩子为第二层深度——树中结点的最大层次有序树—...

2019-11-13 19:30:25 380

原创 c++数据结构 浅谈广义表与矩阵

广义表参考书籍:c++数据结构谈到数组我们肯定都不会陌生,本次我们要以抽象数据的形式讨论数组的定义和实现。我们可以把二维数组看成是一个定长的线性表;它的每个数据元素也是一个定长线性表。在C语言中,一个二维数组类型定义为其分量类型为一维数组类型的一维数组类型,也就是说,typedef ElemType Array2[m][n];等价于:typedef ElemType Array1[n];...

2019-11-12 15:25:07 277

原创 c++ STL(vector)

标准库类型vector参考书籍:c++ primer标准库类型vector表示对象的集合,其中所有对象的类型都相同。集合中的每个对象都有一个与之对应的索引,索引用于访问对象。vector也常被称作容器。要想使用vector,必须包含适当的头文件,即#include<vector>using std::vector以vector为例,提供的额外信息是vector内所存放对象的类型...

2019-11-12 14:41:01 246

原创 c++string类

参考书籍:c++primerstring对象上的操作读写string对象int main(){ string s; cin >> s; cout << s << endl; return 0;}如果程序输入的是“Hello World!”,则输出是“Hello”,输出中没有任何空格。因为string对象会自动忽略开头的空白并从第一个真...

2019-11-10 14:13:57 429 1

原创 c++ 继承与派生(三)

赋值兼容性原则赋值兼容性原则包括:(1)基类对象可以赋值给基类对象,也可以把派生类对象赋值给基类对象。(2)基类指针可以指向基类对象,也可以指向派生类对象。(3)基类引用可以指向基类对象,也可以指向派生类对象。例如,有基类Base和其Derive,可以定义其相关对象、指针:Base b1;Base *pb;Derived d1;(1)派生类对象可以赋值给基类对象,即派生类对象中来...

2019-11-02 23:00:25 316

原创 c++ 继承与派生(二)

先让我回顾一下上次的要点:继承与派生的概念派生类的构造函数和析构函数的执行顺序与规则多继承的声明与实现基类成员访问原则赋值兼容性虚基类的概念派生类的构造函数与析构函数在继承机制中,基类的构造函数和析构函数是不能继承的,也就是说,基类的构造函数不能作为派生类的构造函数,派生类的构造函数负责对来自基类数据成员和新增加的数据成员进行初始化。构造函数的调用顺序如下:(1)基类的构造...

2019-11-02 21:21:59 296

原创 c++ 继承与派生(一)

要点:继承与派生的概念派生类的构造函数和析构函数的执行顺序与规则多继承的声明与实现基类成员访问原则赋值兼容性虚基类的概念继承与派生的概念继承是面向对象程序设计中重要的特性。继承主要是指在已有类的基础上创建新类的过程,这个新类就是派生类。派生类自动包含了基类的成员,包括所有的数据和操作,而且还可以增加自身新的成员。一个派生类从两个或多个基类派生则称为多继承,这个我们后面会说到...

2019-11-02 10:45:29 392

原创

今天我们来讲一个很重要的数据成员—串串的概念及基本定义串是由零个或多个字符组成的有限序列。为了表示字符串的开始与结束,一般用双引号表示。长度就是字符数(注意:空格也算作是字符。长度为零的字符串称作是空串。两个字符的相等是指这两个字符串中的任意位置的对应字符相等。字符串相等与这两个字符串的名字无关。串的表示与实现串的数组方式,有时也叫定长顺序的存储方式,和线性表的顺序存储结构类似。是用一组...

2019-10-29 18:46:18 109

原创 队列

定义队列是另一种操作受限的线性表,是指只允许在表的一端进行插入操作的数据结构,具有“先进先出”的特点。队列分为两种,一种为顺序队列,一种为链队列。在这里重点讲顺序循环队列顺序队列采用静态结构的顺序队列的类型描述如下:#define MAXSIZE 6typedef struct Queue{ ElemType *base; int front; int rare;}Sequeu...

2019-10-26 09:31:47 1676

原创 c++ 类与对象

c++中的类与对象(二)this指针对象的自身引用是面向对象程序设计语言中特有的、十分重要的一种机制。在c++语言中,为这种机制专门设立了一种表示方法,this指针。当程序中调用类的成员函数时,this指针变量被自动初始化为发出函数调用的对象的地址。值得注意的是尽管在定义成员函数时没有看到this指针变量,也没有定义this指针变量,但是我们在函数内依然可以使用this指针变量,因为该指针是...

2019-10-20 10:46:25 381

原创 线性表链式结构的扩展(循环链表和双向链表)

数据结构与算法第二章(线性表的链式结构中的循环链表与双向链表)循环链表循环链表,是指链表的最后一个结点的指针域指向头结点,使得链表头尾结点相连,从而形成一个环。其基本功能操作与单链表类似,唯一不同指出在于判断链表是否结束时,不在为判断结点的指针域是否为空,而是判断结点是否指向头结点。也就是:while(p->Next != L)另外,循环链表可以从链表的任意位置开始遍历链表,得到...

2019-10-15 19:58:55 184

原创 线性表的链式结构

数据结构第二章(线性表的链式结构)上一章,我们谈到了线性表的顺序结构,由于线性表的插入和删除等操作需要移动元素,造成时间效率低。另外,这种存储结构需要占用连续的存储空间。为了弥补顺序存储结构的不足,我们可以讨论另一种存储结构,即链式存储结构,对线性表的插入、删除不需要移动数据元素,但同时也失去了顺序表可随机存取的特点。所谓的链表就是带有一个指针的链式结构,将n个元素通过链接的方式链接成一个链表...

2019-10-15 19:10:57 297

原创 线性表的顺序结构

数据结构第一章(线性表的顺序结构)线性表是数据结构中最简单最基本的数据结构,其所表示的结构是线性结构,也是数据结构中最常用、最重要的形式之一。顺序表所谓顺序表就是用一组地址连续的储存单元按顺序存储线性表中的数据结构,这说明只要知道顺序表的首地址和每个数据元素所占存储单元的个数,就可求出任何一个元素的地址,而且求每个元素的所需的时间是相同的,这就使得顺序表具有按数据的序号进行随机存储的特点。...

2019-10-15 15:51:20 541

空空如也

空空如也

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

TA关注的人

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