代码
hard_man
这个作者很懒,什么都没留下…
展开
-
构造次优查找树
似乎有些错误,但是错在哪了呢?#include #include using namespace std;const int NUM = 9;int value[NUM] = {1,2,3,4,5,6,7,8,9};float weight[NUM] = {1,1,2,5,3,4,4,3,5};float sum_weight[NUM];void init_sum_wei原创 2012-12-27 18:07:35 · 1258 阅读 · 0 评论 -
iOS的KVO实现剖析
KVO原理对于KVO的原理,很多人都比较清楚了。大概是这样子的:假定我们自己的类是Object和它的对象 obj, 当obj发送addObserverForKeypath:keypath消息后,系统会做3件事情:动态创建一个Object的子类,名字可自定义假设叫做 Object_KVONotify。 同时,子类动态增加方法 setKeypath:,动态添加的方法会绑定到一个c语言的函...原创 2018-07-17 15:30:30 · 242 阅读 · 0 评论 -
iOS中你可能没有完全弄清楚的(二)自己实现一个KVO源码及解析
前几天写了一篇blog(点这里),分析了系统KVO可能的实现方式。并添加了简单代码验证。既然系统KVO不好用,我们完全可以根据之前的思路,再造一个可以在项目中使用的KVO的轮子。代码已经上传到github: https://github.com/hardman/AWSimpleKVO。看了觉得有帮助的同学,可以点一下github的star。1. 功能介绍支持如下功能:...原创 2018-08-16 10:52:40 · 330 阅读 · 0 评论 -
javascript函数全解
0.0 概述本文总结了js中函数相关的大部分用法,对函数用法不是特别清晰的同学可以了解一下。1.0 简介同其他语言不同的是,js中的函数有2种含义。普通函数:同其他语言的函数一样,是用于封装语句块,执行多行语句的语法结构。构造函数:不要把它当作函数,把它当作class,内部可以使用this表示当前对象。【注】后续代码基于ES6&ES7标准,笔者是在nodejs v10.7.0...原创 2018-11-14 23:12:05 · 242 阅读 · 0 评论 -
详解AFNetworking的HTTPS模块
0.0 简述文章内容包括:AFNetworking简介ATS和HTTPS介绍AF中的证书验证介绍如何创建服务端和客户端自签名证书如何创建简单的https服务器对CA正式证书和自签名证书的各种情况进行代码验证文中所涉及的文件和脚本代码请看这里。1.0 AFNetworking简介AFNetworking(下面简称AF)是一个优秀的网络框架,从事iOS开发工作的同学几乎都用过它...原创 2018-11-25 13:50:23 · 667 阅读 · 0 评论 -
算法(1)斐波那契数列
#1.0 问题描述实现斐波那契数列,求第N项的值#2.0 问题分析斐波那契数列最简单的方法是使用递归,递归和查表法同时使用,可以降低复杂度。根据数列特点,同时进行计算的数值其实只有3个,所以可以使用3个变量循环递进计算结果。3个变量可以简化为2个变量。#3.0 代码实现3.1使用swift实现func fbnq(_ n: Int) -> UInt64{ if n ...原创 2019-04-08 17:16:40 · 295 阅读 · 0 评论 -
算法(2)KMP算法
#1.0 问题描述实现KMP算法查找字符串。#2.0 问题分析“KMP算法”是对字符串查找“简单算法”的优化。字符串查找“简单算法”是源字符串每个字符分别使用匹配串进行匹配,一旦失配,模式串下标归0,源字符串下标加1。可以很容易计算字符串查找“简单算法”的时间复杂度为O(m*n),其中n表示源字符串长度,m表示匹配串长度。KMP算法的匹配方式同简单算法的匹配方式相同,只不过在失配的时...原创 2019-04-08 17:17:11 · 265 阅读 · 0 评论 -
算法(3)简单四则运算
#1.0 问题描述实现10以内四则运算(只包含数字,±*/和小括号)#2.0 问题分析四则运算使用“后缀表达式”算法来计算,后缀表达式可以无需考虑运算符优先级,直接从左至右依次计算。问题分解成2部分,一是将“中缀表达式”(我们正常写的四则运算字符串样式,即我们的输入表达式)转为“后缀表达式”;二是使用“后缀表达式”求值。“中缀表达式”转“后缀表达式”流程:首先建立一个栈和一个队列,...原创 2019-04-08 17:17:46 · 2196 阅读 · 0 评论 -
算法(4)数据结构:堆
#1.0 问题描述实现数据结构:堆。#2.0 问题分析堆一般使用数组来表示,其中某个节点下标i的两个子节点的下标为 2i+1 和 2i+2。堆是一棵完全二叉树。堆有3种基本操作:创建,插入,删除。这3种操作都需要通过“调整堆”的方式来实现。调整堆是指,对堆中的某个节点,若它的值和它所有子节点相比,不是最大/最小,那么就需要将最大/最小的元素和当前节点交换,这种操作成为“调整堆”。创建...原创 2019-04-08 17:18:15 · 163 阅读 · 0 评论 -
关于@2x,@3x的区别及图片的绘制
为什么会有2倍,3倍图网络上会有很多的解释,这些解释都是对的。通俗点说,出现这种区别是因为,屏幕尺寸没有屏幕分辨率增长的快(所以更高清了)。所以,对于iPhone6来说,1pt(代码中的尺寸值单位,也可理解为屏幕物理尺寸的换算单位)代表2px。对于iPhone6P来说,1pt代表3px。所以对于iPhone6P和iPhone6来说,我们如果都想在屏幕上显示一个100ptx100pt的图片。iPho...原创 2018-06-08 19:45:05 · 14933 阅读 · 0 评论 -
二叉树广度优先遍历
。。。#include using namespace std;struct Node{//二叉树节点 int value; Node *left; Node *right;};struct queue{//辅助队列 int head; int tail; int len;//队列长度,遍历时用 Node ** list;//原创 2013-03-11 15:19:10 · 1187 阅读 · 0 评论 -
基本数据结构(图: 基本结构,DFS,prim算法, kruskal算法)
。。。#include using namespace std;//我们这个图的数据结构 认为://1. 图是由很多节点(VERTEX)构成的, 因此图结构是由一个VERTEX的链表构成的, 每个VERTEX则需要有一个id,也就是start, 取start是为了跟LINE更直观地结合。//2. 每个节点关联着很多(LINE)构成,因此每个VERTEX由很多LINE构成, LI原创 2013-03-13 13:16:02 · 1502 阅读 · 0 评论 -
顺序查找:二分查找,斐波那契查找,插值查找
#include #include #include using namespace std;void printerr(){ cout<<"fc"<<endl;}int binary_search(int *arr, int start, int end, int ele){ while(end >= start){ int mi原创 2012-12-14 17:25:26 · 937 阅读 · 0 评论 -
带有中文的字符串各个字符的获取c++程序
简单易懂,上代码:#include #include #include #include #include using namespace std;class CStr{ char *c; typedef struct { int start; bool isChinese; } counter; int cLe原创 2013-02-01 10:39:14 · 2548 阅读 · 0 评论 -
多继承中虚基类构造函数的一种调用规则
规则:如果父类中有虚基类(A),且有一个直接基类(B)是虚基类的子类,那么子类(C或D)若不显式调用虚基类的有参数构造函数,它的直接基类(B)即使在构造列表中调用了非默认构造函数,那么也会直接调用虚基类的默认构造函数。#include using namespace std;const int CONST = 1;#define CC CONSTclass A{public:原创 2013-02-26 11:30:21 · 1662 阅读 · 0 评论 -
图的最短路径dijkstra算法
想法是这样的:1. 最开始要建立4个list,分别存储 a. 所有的Vertex: allVertex[] b. 一个空的Vertex list: emptyVertex[] c. 一个前缀表 previous list(用来回溯路径用): previous[] d. 一个表示最短距离的表(就是表示某个点与0点的最短距离):前两个list是用来辅助操原创 2013-03-20 16:08:02 · 849 阅读 · 0 评论 -
huffman树和huffman编码
不知道为什么,我写的代码都是又臭又长。直接上代码:#include #include using namespace std;class Node{public: int weight; int parent, lChildren, rChildren; Node(int weight, int parent, int lChildren, int rChi原创 2012-04-11 19:59:33 · 603 阅读 · 0 评论 -
八皇后的一个回溯递归解法
解法来自严蔚敏的数据结构与算法。代码如下:#include using namespace std;const int N = 8;//皇后数int count = 0;//解法统计int a[N][N];//储存值的数组const char *YES = "■";const char *NO = "□";//const char *YES = "●";//const c原创 2012-04-13 20:45:25 · 641 阅读 · 0 评论 -
只有20%的iOS程序员能看懂:详解intrinsicContentSize 及 约束优先级/content Hugging/content Compression Resistance
在了解intrinsicContentSize之前,我们需要先了解2个概念:AutoLayout在做什么约束优先级是什么意思。如果不了解这两个概念,看intinsic content size没有任何意义。 注:由于上面这几个概念都是针对UIView或其子类(UILabel,UIImageView等等)来说的。所以下文中都用UIView指代。AutoLayout在做什么一个UIView想要显原创 2016-03-14 17:38:59 · 33778 阅读 · 11 评论 -
求给定集合的幂集
数据结构中说这个问题可以用类似8皇后的状态树解法。把求解过程看成是一棵二叉树,空集作为root,然后遍历给定集合中的元素,左子树表示取该元素,右子树表示舍该元素。然后,root的左右元素分别重复上述过程。就形成了一个递归。集合使用List--单链表来存储,这样能保证,取和舍都只影响链表中的一个节点。代码如下:#include using namespace std;/原创 2012-04-13 16:35:29 · 1531 阅读 · 0 评论 -
算法(5)哈希表
1.0 问题描述实现数据结构:哈希表。2.0 问题分析哈希表可以看作我们经常使用的字典(swift)或对象(js),可以让一个key&value对一一对应,可以快速根据key找到value。哈希表内部使用数组实现,我们需要将不论任何类型的key计算出与之一一对应的数字来,数字的大小介于0到数组尺寸之间,这样,我们可以把value直接存储到数组的对应位置。通过key计算出唯一数字...原创 2019-04-25 23:28:57 · 252 阅读 · 0 评论