C/C++
文章平均质量分 90
人生如梦91
诚实、冷静、能吃苦耐劳,乐于学习新知识
展开
-
Mac OS X 使用gdb
MAC OS XGDB原创 2016-07-28 12:53:53 · 20400 阅读 · 4 评论 -
【算法导论】动态规划
动态规划这个算法,我一直都搞不明白,也许因为我数学能力太差的缘故,总是不得其要领,每次学习这个算法的时候,总是不知道所谓的状态转移方程到底是怎么样推导出来的。其实就在我写这篇博客的时候,我依然不清楚。什么问题能用动态规划来解决呢?动态规划问题的特征就是 最优子结构,一个递归结构:该问题需要求一个最优解该问题重复包含着子问题比如说经典的动态规划问题,最长公共子序列(如下所述),我们要求一个最长原创 2017-05-22 15:40:45 · 632 阅读 · 0 评论 -
再论红黑树
红黑树真TM是一个非常难的数据结构,至少对我这种非计算机专业的业余爱好者来说是非常难的,正好这段时间想学学这个,虽然中间断断续续的学了一点点,但是都没有彻底的去熟悉甚至去实现这样一棵红黑树,直到今天,才真正的实现了一棵红黑树。为了使自己所学的东西更加的巩固,于是决定不自量力,写篇博客,若有错漏,请指出,勿喷,毕竟本人只是一个非专业型娱乐辣鸡选手。什么是红黑树为什么要使用红黑树红黑树结构的定义原创 2017-05-13 18:31:07 · 884 阅读 · 4 评论 -
贪心算法
贪心算法和动态规划有异曲同工之秒,能用贪心法的,就不用动规。我只想说,动态规划真TM难。分数背包问题Huffman编码贪心算法这样一个算法,它在每一步都做出在当时看来是最优的方案,即它总是做出局部最优的选择。然后构成一个全局最优解。贪心算法也是一个强有力的算法,很多问题都能用贪心算法来解决。下面就说说两个经典的问题,分数背包问题和哈夫曼(Huffman)编码。分数背包问题分数背包问题是这样的,假原创 2017-05-24 12:16:13 · 505 阅读 · 2 评论 -
线性时间排序
一般说来,我们经常使用的都是比较排序,就是在排序过程中要进行比较操作,事实证明,比较排序的最好的时间复杂度是O(nlogn),但是在一些情况下,可以使用一些线性时间的排序方法。计数排序基数排序桶排序计数排序计数排序是假设输入x个整数,每个数都在0~k之间的一个整数,这样不需要比较操作,就可以将数列排列成序。代码简单如下所示:粗略的排序过程如下图所示:根据上图可知,计数排序总体可以分为以下几个步原创 2017-04-15 17:59:49 · 307 阅读 · 0 评论 -
二叉搜索树(Binary Search Tree)
BST的定义BST的前驱和后继BST的插入BST结构BST的中序遍历BST的查找BST的删除删除叶结点删除只有左子树的结点删除只有右子树的结点删除包含左右子树的结点完整代码BST的定义二叉搜索树是这样一种二叉树,对于一个结点x, 如果它的左子树的结点值都小于x,它的右子树的结点值都大于x。并且他的左子树和右子树也满足此特性的二叉树。二叉搜索树的中序遍历可得到数据的有序序列。BS原创 2017-04-18 23:55:04 · 400 阅读 · 0 评论 -
排序算法——堆排序
做为一个非专业的娱乐型选手,虽然工作了这么多年,但是和专业型选手的差距还是不能忽视,要想有进步,就必须要加倍努力。注重内在的修养。相信广大非专业选手和我一样,虽然现在也偶尔写写博客,但是以前,我觉得写博客不是我这种靠自学的人该写的。其实写博客不是为了给别人看,而是为了自己更好的理解,更好的熟悉。真的开始什么是堆图解建堆代码实现真的开始也不知道为什么会有这么大一段感慨,可能比较念旧吧。网上关于原创 2017-04-07 14:50:26 · 385 阅读 · 0 评论 -
C++ Lamba表达式
麻痹,今天不知道怎么了,我竟然失眠了。本来在看电视,突然就想着写一篇关于Lambda的博文,一来算是打发时间,二来算是对自己白天的学习做一个总结吧。Lamba是C++11中最新的功能,Lamba说白了其实就是一个匿名函数,可以包含语句和定义。Lambda通用格式Lambda使用举例Lamba与函数指针Lambda捕获列表mutable关键字结束Lambda通用格式C++ 中的Lambd原创 2017-03-19 05:13:21 · 609 阅读 · 1 评论 -
大写C语言注释
昨天无意中看到一道题:“编写一个程序,使一段合理C语言中的注释全部大写“。突然兴趣来了,于是决定自己动手来试试。这道题目看起来很简单,但是实际动起手来,还是有点难度。C语言注释说明注意问题状态变化图状态定义状态变迁完整代码C语言注释说明C语言的注释分为两种,一种是单行注释,一种是多行注释。单行注释:顾名思义就是当遇到换行之后即表示注释已结束,用//表示多行注释:注释以/*开始并且以*原创 2017-01-07 18:17:58 · 2820 阅读 · 0 评论 -
粗略实现Ping程序
最近一直在看《TCP/IP详解》这本书,也许因为我不是计算机专业的缘故,总感觉看了跟没看一样,想着写写博客,能加深印象,结果简直是尴尬。所以想着不如自己动手来实现一个Ping程序,当是学习学习吧,几年以前用Boost带的asio库实现过一个,此次不依赖任何第三方库,实现一个最基本的Ping程序。Ping程序原理Ping程序演示数据报格式定义ICMP报头定义IP报头定义程序编写参数解析原创 2016-11-17 21:29:25 · 2428 阅读 · 0 评论 -
Mac下粗略实现ls命令
文件结构main函数命令行解析输出结构字段输出文件列表读取目录结构getFileDetails获取基本信息组装文件属性输出列表Makefile的编写结果演示代码链接 在*nix系统下,ls命令都是一个很重要的命令,用于某一文件夹中的文件列表,这个命令实现起来其实也十分简单,今天闲来无事,就在Mac上粗略的写写代码。文件结构不关注内部细节,ls的主要实现应该包括两个部分,原创 2016-10-27 18:04:36 · 2054 阅读 · 0 评论 -
粗略使用OpenSSL编写Apple Push工具
好久没有写过博客了, 自从上家公司裁员,加入新公司之后,每天忙的不可开交,需求不断,每天23点下班,感觉一天24小时都不够用。还好现在大忙的时候已经过去了,临近过年,也没有什么太大的需求了,于是有空就写下博客,记录一下自己做的事。作为一名iOS程序员,推送方面的知识是不可能不接触到的,做推送方面的东西又不可能不调试,每次我都是使用NWPusher这个工具来做测试,用起来确实很方便,但是我却不...原创 2018-12-12 14:48:11 · 288 阅读 · 0 评论