- 博客(15)
- 收藏
- 关注
原创 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。2^(n-1)
解释下:2^(n-1)这里我表示的是2的(n-1次方),不是 2异或(n-1),虽然也不会这么用。这个公式c++可以写为 1<<(--n)位运算不仅快速而且美观例题一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。我们不难可以得出当有n级台阶时,有2^(n-1)种情况,这时直接int jump...
2018-09-28 22:27:39 485
原创 进程的内存结构
一个正在运行的进程在内存空间中申请的代码区、初始化数据区、未初始化数据区、上下文信息以及挂载的信号等等.(1)代码区.加载的是可执行文件的代码段,其加载到内存中的位置由加载器完成.(2)全局初始化数据区/静态数据区.加载的是可执行文件数据段,位置可位于代码段后也可以分开.程序在运行之初就为该数据段申请了空间,在程序退出时才释放,因此,存储于数据段的数据的生存周期为整个程序运行过程.(3)...
2018-09-28 16:37:03 2109
原创 堆和栈概念以及区别
栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底...
2018-09-28 16:21:08 1595
原创 单向链表和双向链表的优缺点及使用场景
单向链表:只有一个指向下一个节点的指针。优点:单向链表增加删除节点简单。遍历时候不会死循环;缺点:只能从头到尾遍历。只能找到后继,无法找到前驱,也就是只能前进。适用于节点的增加删除。双向链表:有两个指针,一个指向前一个节点,一个后一个节点。优点:可以找到前驱和后继,可进可退;缺点:增加删除节点复杂,需要多分配一个指针存储空间。适用于需要双向查找节点值的情况。...
2018-09-28 16:16:39 34834 1
转载 Ping的详细过程以及作用
转: http://blog.chinaunix.net/uid-26758209-id-3146224.html Ping命令的主要作用的是检查网络的连通情况和检测网络的速度。1、Pc1在应用层发起个目标IP位IP2的Ping请求。2、传输层接到上层请求的数据,将数据分段并加上UDP报头。下传到Internet层。3、 网际层接收来处上层的数据后,根据ICMP协议进行封装,...
2018-09-28 15:54:17 503
原创 int *p[10]和int (*p)[10]
int *p[10] 指的指针数组 他是个数组 有10个元素 每个元素是int*类型也就是指向int的指针 也就是存放10个int指针变量int (*p)[10] 指的数组指针他是指针 指向一个含有10个元素的数组 主要用在函数的参数上面,主要用于约束参数数组的长度。...
2018-09-28 15:48:30 2606
原创 宏定义参数加括号
加括号是为了处理表达式参数(即宏的参数可能是个算法表达式)时不出错,因为宏替换就是文本替换。比如以下情况:#define COM(A,B) (A)*(B)那么COM(6+5,3)它会换成这样: (6+5)*(3)显然这是和COM宏的意图一致的,但是如是去掉了定义中括号,即写成这样:#define COM(A,B) A*B那么COM(6+5,3)它就会换成这样: 6+5*3这样显然就...
2018-09-28 15:39:08 4619
原创 动态输入二维数组
使用vector#include<iostream>#include<vector>using namespace std;int main(){ vector<int> a; vector<vector<int> > data; int n; while(cin>>n){ ...
2018-09-28 00:23:05 1682
原创 C++用其他符号作为输入间隔
#include<iostream>using namespace std;int main(){ int a[5]; for(int i =0;i<5;++i){ cin>>a[i]; getchar(); } for(int i =0;i<5;++i){ cout<&l...
2018-09-28 00:18:28 2269
原创 需要直接输入一串数,回车输入结束,把数动态放进数组里
采用vector动态存储#include<iostream>#include<vector>using namespace std;int main(){ vector<int> data; int n,cnt = 0; while(cin>>n){ data.push_back(n); ...
2018-09-27 15:48:36 1926
原创 char 与 unsign char的转换
char为字符类型。unsigned char为无符号字符类型。二者均是占一个字节,可以直接通过强制转换的方式,把char类型的值转为unsigned char。当定义变量:unsigned char a;char b;转换的形式为:a = (unsigned char)b;当char类型的值为正时,转换后的值为原值。当char类型为负时,原始值的符号位会转为数据位,即结果值为原始值补...
2018-09-27 10:38:34 12449
原创 C++的字符串长度
1.对于#include<string>string a = "123";cout<<a.length()输出:3对于上面的a,如果cout<<sizeof(a)输出:8string占8个字节。2.对于#include<cstring>char a[10] = "123";char* b= "123
2018-09-27 10:37:08 2011
原创 字符串的前缀、后缀、子串、子序列
假设s的的长度为n1)串s的前缀(prefix)是从s的尾部删除0个或多个符号得到的串。一共有n+1个前缀。2)串s的后缀(suffix)是从s的开始处删除0个或多个符号后得到的串。一共有n+1个后缀。3)串s的子串(substring)是删除s的某个前缀和某个后缀之后得到的串。一共有C(0,n)+C(1,n)+C(2,n)或者((n*(n+1))/2 )+ 1个子串4)串s的真(...
2018-09-25 15:51:28 4202 1
原创 两种方法建堆时间复杂度
Floyd建堆算法(自下而上下滤)建立规模为n的完全二叉堆的时间复杂度为:O(n)一般的暴力建堆算法(自上而下下滤)时间复杂度为:O(nlogn)
2018-09-24 14:46:35 2911 1
原创 BBST家族的红黑树R-Btree
1.既然已经有了AVL树为什么还需要引入R-Btree,也就是说引入有什么意义?就树形的拓扑结构而语言,大部分的BBST都不能做到相邻版本之间的结构差异不超过O(1),包括AVL树,AVL的插入可以做到O(1),而删除不能做到这点,从AVL删除一个节点可能导致O(log n)次旋转,从而导致树形结构剧烈变化。然而R-Btree就可以做到这一点;R-Btree任何一次动态操作引发的结构变...
2018-09-23 19:53:16 408
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人