自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (5)
  • 收藏
  • 关注

原创 【简单dp】目录

hdu1501:二维dp

2017-03-29 13:02:04 759

原创 【KMP/KMP扩展】目录

KMP:hdu 1686 :简单题hdu 2087 :简单题hdu 3746 :需透彻理解next数组的含义hdu 1358 :还是需要透彻理解next数组的含义hdu 3336 :有点难度,KMP+DP

2017-03-07 16:04:18 999

转载 代码运行前内存分配

大家是不是很疑惑,我们平时写的代码,内存中是如何去存储的?分两种情况,程序运行前,与运行时的程序内存分配情况。知识补充:文件布局在内存中的映射 从上到下依次递减,最上面为高地址:栈 堆 .bss .data .rodata .text 未映射区域第一种情况:代码程序没运行前的内存分布情况1.未初始化的全局变量和静态变量主要存放在 .bss中 int A; static i

2017-03-31 17:07:06 551

转载 enum

enum内的值都是常量,不可改变。它并不是在预编译的时候进行替换,而是在运行时,从enum定义的常量存储区取定义的常量值。因此,同样的常量定义,如果用#define,代码中多处用到该常量的话,编译出来的会比用enum定义使用的常量存储区大。关于占用内存的大小,enum类型本身是不占内存的,编译器直接替换。但是enum类型的变量肯定是占内存的(关于占用内存的大小,看后面详述)。enum需要特别注意的是

2017-03-31 16:38:00 854

原创 const与define的区别

(1) 编译器处理方式不同 define宏是在预处理阶段展开。 const常量是编译运行阶段使用。(2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开。 const常量有具体的类型,在编译阶段会执行类型检查。(3) 存储方式不同 define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。(宏定义不分配内存,变量定义分配内存。) const常量会在内

2017-03-31 10:30:54 588

原创 通过指针修改const变量

const int a = 1;int * p = (int*)&a;*p = 2;cout << &a << " " << p << endl; //00D6FB90 00D6FB90cout << a << " " << *p << endl; //1 2一个内存地址竟然同时存两个值,有点诧异。这就牵涉到了常量折叠。常量折叠的概念:在编译器里进行语法分析的时候,将常量表达式计算求值,

2017-03-31 09:58:57 926

原创 nullptr与null

#ifndef NULL #ifdef __cplusplus #define NULL 0 #else #define NULL ((void *)0) #endif#endif在C语言环境下,由于不存在函数重载等问题,直接将NULL定义为一个void*的指针就可以完美的解决一切问题。 但是在c++环境下情况就变得复杂起来, 首先我们不能

2017-03-31 09:41:52 1001

转载 细说new与malloc的10点区别

前言几个星期前去面试C++研发的实习岗位,面试官问了个问题:new与malloc有什么区别?这是个老生常谈的问题。当时我回答new从自由存储区上分配内存,malloc从堆上分配内存;new/delete会调用构造函数/析构函数对对象进行初始化与销毁;operator new/delete可以进行重载;然后强行分析了一下自由存储区与堆的区别。回来后感觉这个问题其实回答得不怎么好,因为关于new与mal

2017-03-31 08:30:51 497

转载 堆内存与栈内存的区别

栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。 堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。区别和联系:1.申请方式 堆是由程序员自己申请并指明大小,在c中malloc函数 如p1 = (char *)malloc(10); 栈由系统自动分配,如声明在函数中一个局部变量 int b; 系统自动在栈中为b开辟空间2.

2017-03-31 00:00:13 541

原创 free store与heap的区别

这个问题有点争议,看了很多博客,也去技术论坛搜了下,基本得出以下结论:malloc在堆上分配内存,new在自由存储区上分配内存。但是两者有何区别呢?http://www.devx.com/tips/Tip/13757上所说: The terms heap and free-store are used interchangeably when referring to dynamically a

2017-03-30 23:21:25 1194

原创 cpp到obj再到exe,重定义的问题

一个工程项目,会有很多.cpp,每个.cpp先生成对应的.obj,即编译单元;接着链接器把所有编译单元链接起来,组成一个.exe,这就是程序了。   include的目的是我们可能会在当前的cpp中使用其他cpp内定义的东西,但是我们不可以直接include该cpp,因为这会导致在链接的时候出现重定义的错误(cpp本身有一份定义,又被别人include了一份定义,链接的时候就会有两份定义)。因

2017-03-29 10:15:50 4372

原创 二叉树操作(面试必备)

本篇针对面试中常见的二叉树操作作个总结:   (1)前序遍历,中序遍历,后序遍历;   (2)层次遍历;   (3)求树的节点数;   (4)求树的叶子数;   (5)求树的深度;   (6)求二叉树第k层的节点个数;   (7)判断两棵二叉树是否结构相同;   (8)求二叉树的镜像;   (9)求两个节点的最低公共祖先节点;   (10)求任意两节点距离;   (11)找出二

2017-03-27 18:28:18 819

转载 C++ trivial和non-trivial及POD类型POD(Plain Old Data)

POD全称Plain Old Data是指C风格的struct结构体定义的数据结构,其中struct结构体中只能定义常规数据类型(不能含有自定义数据类型)。它仅作为被动的收藏的字段值,不使用封包或者other object-oriented特征。对于POD类型T的对象,不管这个对象是否拥有类型T的有效值,如果将该对象的底层字节序列复制到一个字符数组(或者无符号字符数组)中,再将其复制回对象,那么该对

2017-03-26 09:10:27 2009

原创 ADT(Abstract Data Type)

在stackoverflow上找到了答案,第二个人的回答: Abstract Data Type(ADT) is a data type, where only behavior is defined but not implementation. Opposite of ADT is Concrete Data Type (CDT), where it contains an imp

2017-03-26 09:03:13 1490

原创 二叉树基础

一:前言  本文主要讲解以下二叉树的4个部分:   (1)构造二叉树;   (2)前,中,后序遍历(递归与非递归)和层次遍历;   (3)求节点数;   (4)求叶子数。   在此先约定下二叉树的节点结构和类的结构:struct Node { char data; Node *left, *right;};class BiTree{public: Node

2017-03-20 13:40:45 336

原创 位运算总结

按位与运算按位与运算符”&”是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现。 例如:9&5可写算式如下: 00001001 (9的二进制补码) &00000101 (5的二进制补码) 00000001 (1的二进制补码) 可见9&5=1。 按位与运

2017-03-20 10:58:05 1277

原创 01背包问题

01背包问题一:问题  有NN件物品和一个容量为VV的背包。第ii件物品的体积是CiC_i,其价值是WiW_i。求解,在不超过背包容量情况下,将哪些物品装入背包可使价值总和最大。二:基本思路  这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。   状态 F[i,v]F[i,v]表示前ii件物品恰放入一个容量为vv的背包可以获得的最大价值。   转移方程 F[i,v]=max{F

2017-03-17 12:51:05 607

原创 C++语言中内存分布及程序运行中(BSS段、数据段、代码段、堆栈)

text: 代码段(code segment/text segment)通常是指用来存放 程序执行代码 的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于 只读 , 某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些 只读的常数变量 ,例如字符串常量等。程序段为程序代码在内存中的映射.一个程序可以在内存中多有个副本.BSS段:(bss segment)

2017-03-17 09:06:28 1259

原创 判断栈的增长方向

func() { int a; int b; }在不同的编译器下,a,b的在栈上的位置可能不同。例如gcc3.x是按定义的顺序入栈的,但gcc4.x正好相反。你不能用它来判断栈的方向。 但无论如何,函数调用的顺序不会变,所以其参数压栈的先后顺序也不会变.#include<stdio.h>void func1();void func2(int *a);void func1(){ int a

2017-03-17 08:57:09 492

原创 二分查找(面试必备)

在计算机科学中,二分搜索(binary search),也称折半搜索(half-interval search)、对数搜索(logarithmic search),是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。

2017-03-15 10:55:07 814

原创 最小值和最大值

在一个包含n个元素的集合中同时找出最小值和最大值,求解最佳思路。思路: 常规思路就是,遍历每个元素,分别与min和max比较,这共需2n−22n-2次比较。 事实上我们可以每次遍历两个元素,把这两个元素进行比较,小的再与min比较,大的与max比较,这样算来一共需要3n2\frac {3n}2次比较,也就是每两个元素需要3次比较。

2017-03-14 08:57:31 776

原创 扩展KMP算法

前文已经介绍了经典的KMP算法,本文继续介绍KMP算法的扩展,即扩展KMP算法。   问题定义:给定两个字符串S和T(长度分别为n和m),下标从0开始,定义extend[i]等于S[i]…S[n-1]与T的最长公共前缀的长度,求出所有的extend[i]。举个例子,看下表: i 0 1 2 3 4 5 6 7 S a a a a a b

2017-03-12 17:23:40 604

原创 C++如何打印一个字符的地址

#includeusing namespace std;int main(){ int x = 1; int* p_int = &x; cout " " << p_int << endl; char ch = '1'; char* p_char = &ch; cout " " << p_char << endl; return

2017-03-10 23:04:13 2488

原创 KMP算法(1):如何理解KMP

一:背景  给定一个主字符串(以 S 代替)和模式串(以 P 代替),要求找出 P 在 S 中出现的位置,即串的模式匹配问题。今天来介绍解决这一问题的常用算法之一,Knuth-Morris-Pratt 算法(简称 KMP),这个算法是由高德纳(Donald Ervin Knuth)和沃恩·普拉特在1974年构思,同年詹姆斯·H·莫里斯也独立地设计出该算法,最终由三人于1977年联合发表。   在继

2017-03-08 13:28:49 707

转载 C语言union关键字

union 维护足够的空间来置放多个数据成员中的“一种”,而不是为每一个数据成员配置空间,在union 中所有的数据成员共用一个空间,同一时间只能储存其中一个数据成员,所有的数据成员具有相同的起始地址。例子如下:union StateMachine{   char character;   int number;   char *str;   double exp;};

2017-03-08 12:06:11 701

Snagit 2018 注册机

放在安装目录下,运行点击生成,复制,粘贴到软件需要输入的注册码位置即可,亲测2018年可用。

2018-08-02

Linux网络编程-41集

tcp-ip linux 视频教程,一共41集,压缩包3.18G,保存在百度云,上面资源是链接和密码。

2018-08-02

Unity圣典.chm

可以帮助没有网的同学查找你想要的script含义。搜索方面,会出现乱码,所以建议查找时可以去主目录一个一个去查找,虽然麻烦。为何搜索会出现乱码,我也没能解决。

2015-12-05

Unity3D中的线性插值Lerp()函数解析

下载自百度文库http://wenku.baidu.com/linkurl=srUzgA0QBvQdJDwcQtmr3NNw6xy1Hq7Bp79jXpjBdDh1inuvg4j56nq1u4aSwFMRumcWWtJ8_XeOtUYIuyJ8a_1w073aZVBCqInTC4HWzHW。 这篇文章很详细的讲述了Lerp函数的使用,相信一定让你恍然大悟。

2015-12-03

Sublime Text2汉化包

汉化方法: 1.运行sublime text 2; 2.选择“preferences”—>“Browse packages”; 3.找到文件夹“Default”,将解压得到的文件复制到“Default”文件夹下覆盖即可。

2015-11-30

空空如也

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

TA关注的人

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