- 博客(15)
- 收藏
- 关注
原创 【C++】强制类型转换
C++中四种强制类型转换:static_cast, reinterpret_cast, const_cast, dynamic_cast1. static_cast(编译时类型检查)用于非多态类型之间的转换(静态转换),任何标准类型之间都可以用它,但它不能用于不相关类型之间的转换。主要有以下几种用法:用于基本的数据类型之间的转换,例如把int转换为char,把int转换为enum,但...
2018-07-28 16:25:51 192
原创 数字和Sum的方案数
题目描述 给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数。当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案。 输入描述: 输入为两行: 第一行为两个正整数n(1 ≤ n ≤ 1000),sum(1 ≤ sum ≤ 1000) 第二行为n个正整数Ai,以空格隔开。 输出描述: 输出所...
2018-07-28 15:11:15 692
原创 1+2+3+...+n
题目:计算1+2+3+…+n,要求:不使用if, while, for, switch, case等关键字及三目运算符。看到题目要求不能使用这么多关键字,那么可以考虑用递归。int Sum_Solution(int n, int& sum){ n&&Sum(n - 1, sum); return sum += n;}void test()...
2018-07-26 16:45:00 1105
转载 01背包问题(动态规划)
总结——01背包问题 (动态规划算法) 0-1 背包问题:给定 n 种物品和一个容量为 C 的背包,物品 i 的重量是 wi,其价值为 vi 。问:应该如何选择装入背包的物品,使得装入背包中的物品的总价值最大?分析一波,面对每个物品,我们只有选择拿取或者...
2018-07-24 21:37:20 358
原创 浅析C++中的explicit, mutable
explicitexplict用来声明构造函数,防止隐式的类型转换,避免不必要的错误。 当类的构造函数的参数只有一个的时候,或者所有的参数都有缺省值的情况下,我们可以利用一个内置类型去赋值一个类对象,就像下面的例子:class A{public : A(int a, int b = 10) : _a(a) , _b(b) {}priv...
2018-07-22 11:06:20 245
原创 青蛙跳台阶
青蛙跳台阶一只青蛙可以一次跳1层台阶,也可以一次跳2层台阶,问青蛙跳上n层台阶有多少种跳法? 思路:首先,考虑特殊情况: 当n等于0的时候,0层台阶,f(0)=0; 当n等于1的时候,1层台阶,也就1种跳法,f(1)=1; 当n等于2的时候,2层台阶,可以一次跳两层,也可以一层一层跳,两种跳法,f(2)=2; 当n等于3的时候,青蛙的第一跳有两种情况,跳一层...
2018-07-18 22:57:09 554
原创 【C++】设计一个类,只能在栈(堆)上创建对象
设计一个类,只能在栈上创建对象使用new运算符,对象会建立在堆上,也就是说只要不用new去创建对象就可以实现,我们知道new和delete分别调用了operator new和operator delete,如果我们把这两个函数声明为私有的,操作符new就不能用了。class A{public: A() { cout << "A()" <...
2018-07-17 16:30:32 358
原创 【C++】设计一个不能被继承的类
设计一个类,不能被继承在继承体系中: 基类public成员 基类protected成员 基类private成员 概括 public继承 仍为public成员 仍为protected成员 不可见 非私有成员访问属性不变 protected继承 变为protected成员 变为protected成员 不可见 非私有成员...
2018-07-14 15:08:05 1513 1
原创 Shell脚本工作原理
我们知道Shell脚本是一种解释性的语言,是不用编译的,那么它是如何执行程序的呢?chmod u+x test.sh./test.sh Shell会fork()一个子进程,然后调用exec()执行,exec()会用把子进程的代码段替换成test.sh程序的代码段,然后开始执行,父进程等待子进程终止; 但是由于test.sh是一个文本文件,并没有代码段和_start函数,这是...
2018-07-11 22:21:02 4105 2
原创 IO多路转接之select
五种IO模型阻塞IO,在内核将数据准备好之前,系统会一直在等待,所有的套接字,默认都是阻塞方式非阻塞IO:如果内核还没有将数据准备好,系统会调用仍然直接返回,并且返回EWOULDBLOCK错误码,非阻塞IO需要程序员循环的方式反复尝试读写文件描述符,看数据是否准备好,这个过程称为轮询,,这对CPU来说是很大的浪费信号驱动IO:内核将数据准备好的时候,使用SIGIO信号通知应用程序进行IO...
2018-07-09 23:43:30 209
原创 正则表达式
grep工具grep是Linux中常用的文本过滤工具,按照关键字或者正则表达式进行过滤,它是按行匹配的,通常是Linux中处理文本的第一步。grep工具采用的是贪婪匹配,即:匹配当前行中所有的匹配内容。grep工具如果匹配到了,它的退出码是0,如果没有匹配到,它的退出码是1。选项-i 忽略大小写的不同-n 同时输出行号-v 反向选择,显示出没有'搜寻字符串'内容的一行-o ...
2018-07-08 10:37:46 483
原创 Shell基本语法练习
Shell脚本语法练习1. 计算1+2+3+4+…+100#!/bin/bashi=1sum=0while [ $i -le 100 ]do let sum+=i let i++doneecho $sum2. 计算1+2+3+4+…+100,并将执行过程打出#!/bin/bashi=1sum=0echostr=''while [ $i -le ...
2018-07-05 16:46:00 392
原创 Shell脚本中的$()和``及eval
1. ``和$()有什么区别?在shell脚本中,``和$()是用来完成命令替换的,先执行反引号或括号里面的内容,将结果代换到当前命令。 例如: 区别:对于转义字符的处理有些不同 ``中的转义没有成功,$()中\将$转义成普通字符``中两个\\将$转义成了普通字符,$()中\\的输出结果是\,和一般的转义结果一样$()中的转义字符和我们平时使用的是一样的,``中...
2018-07-04 17:27:43 6052
原创 Shell截取字符串
Shell脚本中截取字符串的方法一共有8种,分别如下:1.#*n截取,删除左起第一个n及其以左的字符, 2.##*n表示删除左起最后一个n及其以左的字符(n表示字符串中的某一个字符) 3.%n*截取,删除右起第一个n及其以右的字符, 4.%%n*表示删除右起最后一个n及其以右的字符 5.${str:n:m}表示截取,左起从第n个字符开始,共m个字符 6.${str:n}表...
2018-07-04 17:13:47 1705
转载 Word Ladder
LeetCode[127. Word Ladder] 题解 难度[medium] 题目: Given two words (beginWord and endWord), and a dictionary’s word list, find the length of shortest transformation sequence fromb...
2018-07-02 22:31:45 362 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人