
c/c++
文章平均质量分 72
pandening
我很笨,但我很勤劳!
展开
-
2014|2015 华为机考简单题解体报告
这是2014(2015?)年华为机考简单题简单,倒数第二题就是为了好玩(或者虐CPU)…../* 2015 huawei test. Author:hujian Time:2016/4/4 nankai*//* * 1. 60 points problem */#include <iostream>#include <list>#include <stri原创 2016-04-05 00:06:22 · 600 阅读 · 0 评论 -
poj 2431
题意:这道题要求的是最少的加油次数,告诉你n个加油站的距离和每个加油站可以加的油。让你求能不能到达终点,如果可以的话最少需要加多少油。 解法:这可以用优先队列来解决。我们想象,当经过一个加油站时,我们不一定加油,但是我们一定可以加油。因为我们到达了这个加油站,所以相应的获得了可以加油的权利,但是我们可以不加,当我们足以行驶到下一个加油站时,我们就可以选择不加,但是当我们无法行驶到下原创 2016-05-24 16:02:48 · 473 阅读 · 0 评论 -
POJ 1251
这道题就是对优先队列的应用。 huffman+priority_queue #include #include #include #include #include #include #include #include using namespace std;int main(){ string in; int count[200]; //原创 2016-05-24 16:41:53 · 427 阅读 · 0 评论 -
STL 源码剖析 stack
#ifndef _HJSTL_STACK_H_#define _HJSTL_STACK_H_/** Author:hujian* Time:2016/4/30* discription:this file is about stack structure.* NOTICE:using deque as the low-level structure of stack.* you ca原创 2016-04-30 20:53:50 · 449 阅读 · 0 评论 -
STL 源码剖析 queue
#ifndef _HJSTL_QUEUE_H_#define _HJSTL_QUEUE_H_/** Author:hujian* Time:2016/4/30* discription:this file is about queue structure.* NOTICE:using deque as the low-level structure of queue.* you ca原创 2016-04-30 20:54:45 · 428 阅读 · 0 评论 -
STL vector
/*** Copyright (c) 2016 hujian.* Permission to use, copy, modify, distribute and sell this software* and its documentation for any purpose is hereby granted without fee,* provided that the above原创 2016-04-17 16:42:04 · 430 阅读 · 0 评论 -
opencv角点检测
什么叫角点呢? “如果某一点在任意方向的一个微小变化都会造成图像灰度很大的变化,那么这个点就是角点”,我们可以把角落看成是角点的现实体现,对于墙角来说,墙角是所有平面的开始点,只要这个点变化,就会引起所有从这个点出发的平面的变化,这就是角点。下面是几个角点的具体描述1、一阶导数,也就是图像灰度的梯度的局部最大所对应的像素点2、两条以及两条以上边缘的交点3、图像中梯度值和梯度原创 2016-04-17 18:29:32 · 447 阅读 · 0 评论 -
opencv remap
什么叫做重映射呢? 重映射,就是把一幅图像中的某个位置上的像素放到另一个图像中指定位置上的过程。为了完成这样的映射,我们需要一个重映射函数来讲源图像与目标图像的坐标对应起来。 像这样:g(x,y)=f(h(x,y)) g函数是目标图像上的坐标点,f是原图像的,而h函数是作用于原图像上的函数。remap( )函数会根据我们指定的映射形式,将源图像进行重映射几何变换,基于的式子如下: void r原创 2016-04-17 19:02:05 · 2851 阅读 · 0 评论 -
STL list
/*** Copyright (c) 2016 hujian.* Permission to use, copy, modify, distribute and sell this software* and its documentation for any purpose is hereby granted without fee,* provided that the above c原创 2016-04-18 21:47:11 · 429 阅读 · 0 评论 -
并查集的实现c
#ifndef _UNION_SET_H_#define _UNION_SET_H_#include #include #include /* *This file is about union set operations. *and the program is c-style,you can transfer it to *cpp-style. *you原创 2016-05-26 14:22:50 · 600 阅读 · 0 评论 -
poj 2542
题意:给定多组(x,y),x和y的信仰相同,估计信仰的数量 解法:并查集,初始化ans为总人数,当添加一对(x,y)后,判断,如果已经是一组了,不做,如果不是,ans-1.#include #include #include /* *This file is about union set operations. *and the program原创 2016-05-26 14:49:30 · 666 阅读 · 0 评论 -
STL源码剖析heap
现在可以到github上下载目前为止的所有文件了。 其中,hjstl_vector目前无法正常工作,后期会回来修复bug。 下面是地址:https://github.com/pandening/HJSTL#ifndef _HJ_STL_HEAP_原创 2016-05-05 10:14:55 · 547 阅读 · 0 评论 -
辅助编译
是时候上传一个自己的一个十分简便的辅助编译程序,我也不知道为什么要做,但是控制不住!!!#include "head.h"/* *This program is just use for hujian's program. *And this peogram is do some easy work for hujian *You can look up the sou原创 2016-05-21 18:20:08 · 530 阅读 · 0 评论 -
KMP算法实现才 c++
kmp算法可以有效提高字符串匹配的速度,当匹配字符串中出现较多循环节时尤其有效,但是当一个字符串中几乎每一个字符都不相同的时候,kmp算法并不能很好的加速整个匹配过程,但是光思想就可以甩brute-force算法几条街。下面给出了两种算法的具体实现,对于kmp算法,其关键思想是:当与源字符串出现不匹配时,无需从头再来,而是可以只退回到next[j]的位置,j为当前匹配字符串的位置,所以kmp算法的原创 2016-05-22 15:49:34 · 1012 阅读 · 0 评论 -
poj 3461
本题求解的是说输入两个字符串,求第一个字符串在第二个字符串中出现的次数。直观理解就好,用kmp算法很好实现,只要稍微改一下标准kmp算法就可以。首先,next数据求解还是一样,在kmp进行过程中,如果第一个字符串不是第二个字符串的子字符串,那么没什么问题,答案是0.如果第一个字符串是第二个字符串的子字符串,而且只出现一次,那也可以直接用kmp实现,不需要修改,答案是1。但是,当第一原创 2016-05-22 16:02:54 · 459 阅读 · 0 评论 -
数据结构之堆的实现
堆:孩子都比父亲大,或者孩子都比父亲小#ifndef _HEAP_H_#define _HEAP_H_#include #include #include /* *this file is about heap of c-style,and i will offer the interface of push/pop/top/size *but,the pro原创 2016-05-24 12:26:11 · 409 阅读 · 0 评论 -
哈夫曼树的c++实现
huffman 树称为最优二叉树,用其来对字符编码是一种比较好的选择,huffman树的实现也比较简单,构造huffman树的思想就是每次从序列中取出权值最小的两个,然后构造出一个树,然再去构造,一直到只有一个根节点为止。根据这个“每次从中选出最小的两个值”,我们应该想到优先队列,优先队列可以迅速的从一堆数中找出极小值或者极大值,用优先队列的这个性质可以很简单的构造huffman树。 当原创 2016-05-24 11:21:10 · 2736 阅读 · 0 评论 -
STL 源码剖析 deque实现源码
#ifndef _HJSTL_DEQUE_H_#define _HJSTL_DEQUE_H_/* * Author:hujian * Time:2016/4/28 * discription:this file is about deque structure. **/#include "hjstl_alloc.h"#include "hjstl_construct.h原创 2016-04-28 14:31:10 · 2403 阅读 · 0 评论 -
STL空间配置器(一)
STL空间适配器(一)Author:胡建 Time:2016/4/5 这是STL学习的第一部分,空间适配器,所谓空间适配器,就是用来管理内存的一个器具。对于STL来说,空间适配器是它可以正常工作的基础,也为它可以高效工作提供了动力。对于使用STL来说,它是不和用户直接打交道的,而是隐藏在一切STL组建之后,默默为各种内存申请提供支持的。 对于c++用户来说,new和delete很熟悉,这两个原创 2016-04-05 13:09:54 · 2358 阅读 · 0 评论 -
图像平滑处理(滤波)
Author:胡健1、图像平滑(smooth)也称为“模糊处理”,最常见的smooth的用法是减少图像上的噪声或者失真。 2、图像滤波 什么是图像滤波呢?就是在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制。图像滤波的目的就是消除图像的噪声和抽出对象的特征,图像滤波的要求是:不能损坏图像的重要特征信息(如轮廓和边缘),还需要使得滤波处理后的图像更加清晰。 对于平滑滤波来说,他的目的有两类原创 2016-04-05 20:03:15 · 22835 阅读 · 0 评论 -
递归(一)
n n n n s n e e e n n e y e n n e e e n n n n n n看上面的矩阵,从某一个点开始,任意组合的字符可以组合成某个特定的单词吗?比如从位置(2,2)开始可以组合成单词“yes”吗? 我们需要分析问题需要做的事情,就是比较字符,最终得到一个相同的字符,那我们分解为每次比较一个字符,然后递归下去就可以得到结果。 出口在哪? 1、如果原创 2016-04-05 23:49:36 · 448 阅读 · 0 评论 -
STL空间配置器(二)
上一篇是对STL空间配置器的入门级理解,在这一篇中,我将讨论更加深入的SGI STL空间适配器的内容。在下一节中,我将根据自己的理解,结合STL标准接口,实现一个符合STL标准的具有次级配置能力的简单空间配置器,将剪掉一切不需要的代码,在加上我自己的理解,实现一个更容易阅读与理解的空间配置器。 在开始进入正题之前,我先来谈谈为什么要花这么长的时间在看空间配置器的部分,而且对于学习如何使用STL来说原创 2016-04-06 19:57:32 · 1502 阅读 · 0 评论 -
图像腐蚀和膨胀
一、概论 数学形态学(Mathematical morphology) 是一门建立在格论和拓扑学基础之上的图像分析学科,是数学形态学图像处理的基本理论。其基本的运算包括:二值腐蚀和膨胀、二值开闭运算、骨架抽取、极限腐蚀、击中击不中变换、形态学梯度、Top-hat变换、颗粒分析、流域变换、灰值腐蚀和膨胀、灰值开闭运算、灰值形态学梯度等。膨胀与腐蚀是图像的最基本的两种变化,他们能实现的功能包括但不限于原创 2016-04-06 20:39:05 · 2934 阅读 · 0 评论 -
STL空间配置器(三)
上一篇没写完的代码,因为我用的是VS2013所以无法测试我的配置器,我是照着SGI的版本写的,所以不符合STL标准规范,而VS随身带的STL是符合STL规范的,所以我无法测试,等到我自己写好了迭代器,容易之后,就可以测试了,不过在这之前,我将专门用一篇文件来学习并且自己写一个内存池,然后将这个内存池部署到我的HJSTL里面,下面是完整的HJSTL 空间配置器代码 1.0.0,大规模模仿SGI,但是原创 2016-04-07 10:34:20 · 491 阅读 · 0 评论 -
STL配置器(四)----内存池技术
关于内存池,我相信大家都比较感兴趣,实现的版本也很多,但无论怎么实现,我觉得很重要的一点是:不能让管理内存池的成本太大!这是关键。比如,你管理100M的内存需要花50M的空间才能搞定,那我觉得不如直接用malloc和free来得实在,除了管理内存消耗外,还要注意效率,如果效率太低那也没什么意义。本质上,内存池技术的出现是为了减少fragment碎片问题,用malloc和free来操作内存容易造原创 2016-04-08 22:48:22 · 2627 阅读 · 0 评论 -
STL迭代器(一)
迭代器学习(一)《STL 源码剖析》中,第三章叫“迭代器概念与traits编程技法”。总共33页,我艰难的读了一遍,愚蠢的我还是被所谓“traits技法”惊呆了!说白了,想要真正明白迭代器,就必须了解traits编程技术。 但不忙,在看什么是traits之前,先看看什么叫“迭代器”:迭代器是一种设计模式,他要求提供一种方法,使之能够一次访问某个聚合物内部的元素,而又无需暴露该聚合物内部的表达方式。原创 2016-04-10 13:59:32 · 638 阅读 · 0 评论 -
opencv图像金字塔
我们可以使用下面的函数来将某种size的图像转换为另一种size的图像: (1)、resize函数void resize(InputArray src,OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR )第一个参数,InputArray类型的src,输入图像,即源图像,填Ma原创 2016-04-10 15:02:46 · 460 阅读 · 0 评论 -
opencv图像霍夫变化
霍夫变化可以从图像中快速的提取出直线或者圆等形状的图像。 霍夫变化是图像处理中的一种特征提取技术,霍夫变化分为霍夫线变化和霍夫圆变化。一、霍夫线变化 霍夫线变化用来寻找直线,在进行霍夫线变化之前,需要对图像进行边缘检测处理,也就是说,霍夫线变化的输入只能是二值图像。 在opencv中,支持三种霍夫线变化: (1)、标准霍夫变化,HoughLines函数 (2)、多尺度霍夫变化,原创 2016-04-10 18:06:21 · 1161 阅读 · 0 评论 -
递归搜索之朋友配对数
/* *这是一道关于暴力搜索的题目,题目要求输入一组朋友关系,然后输出有多少种 *两两朋友组队在一起的方法 *设计:我们使用递归函数来解决,在这个问题中,将整个问题分为n/2个操作,每个 *操作等同于对两名学生的组队,此问题变为:给定还没有组队的学生名单时,计算出 *两名朋友之间组成一对的组合个数,对名单中两名为朋友关系的学生组队后,还是和 *原来一样需要处理同样的问题,所原创 2016-04-10 21:34:57 · 659 阅读 · 0 评论 -
STL迭代器(二)
这是SGI STL迭代器学习的第二部分,上一部分我对整个STL迭代器做了一些学习,知道了什么叫迭代器,什么叫traits编程技术,算是对迭代器有了一个整体上的认识,那么在这一部分中,我想要深入一点,了解一些本质上的东西,并且期望做到整体把握迭代器的设计原理与方法。 指针(原生)是一种特殊的迭代器,因为它可以达到迭代器一样的功能,反过来,迭代器是一种指针,这样对吗? 确实,迭代器就是原创 2016-04-11 12:14:21 · 510 阅读 · 0 评论 -
二叉查找树的实现(c++)
#ifndef _HJ_STL_BST_H_#define _HJ_STL_BST_H_/** Author:hujian* Time:2016/5/8* discription:this file is about binary search tree<BST>.** NOTICE:you should not use hjstl_vector in anywhere.* beca原创 2016-05-10 12:06:00 · 1062 阅读 · 0 评论 -
poj 2406
题意:找一个字符串中的循环字符串次数比如:ababab循环字符串为ab,次数为3又比如:abcab的循环节为abcab,次数为1解法:用kmp数组,kmp数组的含有是当不匹配时可以直接回退到next[j],我们求完next数组之后。用 length%(length-next(length))判断是否具有循环节(自身其实也是一个循环节),如果可以整除,则说明该字符串是由l原创 2016-05-22 17:39:14 · 374 阅读 · 0 评论