自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(108)
  • 资源 (3)
  • 收藏
  • 关注

转载 全是正数的数组中找和等于给定值的最长子数组

这个题来自于左程云老师的书本p354,但是讲的并不是很透彻,现在这里试着分析如下

2016-01-19 12:07:29 573

转载 不重复打印排序数组中相加和为给定值的所有二元三元组

给定排序数组array和给定值k,不重复打印array中累加和为k的不降序二元与三元组, 比如给定array={-8,-4,-3,0,1,2,4,5,8,9},k=10,打印结果为   1   9   2   8   思路如下:   使用两个指针,left指向最左边的节点,right指向最右边的节点,然后我们不断的向中间压缩,打印   如果array[left]+array[r

2016-01-18 21:53:23 609

转载 二维矩阵(杨氏矩阵)查找

定义:  从左到右,从上到下,依次增大查找某元素假设矩阵为                   1     2   8   9                   2    4    9   12                   4    7   10  13                   6    8    11  15    在里面查找7,如果我们从1

2016-01-18 17:43:26 702

转载 需要排序的最短子数组长度

题目很简单,求需要排序的最短子数组长度假设数组为a b c d e f g h i j k l m  n如果abc是有序的,mn是有序的,至于中间的defghijkl是无序的,我们可以得知,如果是正常升序序列,左边的一定是小于右边的任意数值,右边的一定大于左边的任意数值。所以我们从后往前遍历,如果某个元素大于右边最小的元素,就标记,一直遍历到最左边从前往后遍历,如果某个元素小于左边

2016-01-17 17:07:09 1257

转载 未排序数组中累加和为给定值的最长子数组

注意数组元素可正可负,给定值设为k,求其和为K的最长子数组长度解法1:       最笨的方法,穷举所有子数组,每次穷举到特定子数组时候,把子数组元素都加起来,设立length,然后维持该length,时间复杂度O(N^3)解法2:     使用前缀和数组,比如数组a[10],设置help数组,help[i]代表a[0]+a[1]+```+a[i],这样,在穷举到某个特定数组时候,

2016-01-17 15:36:54 1396

转载 转换数组使奇数位为奇数 偶数位为偶数

设定 odd even两个标志位为odd为1,even为0,然后从最后一位开始看,如果说最后一位为偶数,就和even位交换,even自增2,如果是奇数,则和odd位交换,odd自增2,一直到二者其中一个越界位置。   解法比较奇特。#include#include #include using namespace std;//改变数组,令其奇数位置存储奇数,偶数位置存储偶数//要求空

2016-01-17 13:48:11 1286 1

转载 最长可整合子数组

先给出可整合数组的定义: 如果一个数组arr在排序之后,从最小值到最大值的顺序中,每相邻两个数之间差的绝对值都为1,则arr为可整合数组。 例如: arr = {5,3,4,6,2},再排序之后为:{2,3,4,5,6},排序后符合每相邻两个数之间差的绝对值都为1,所以arr是可整合数组。 给定一个整形数组arr,请返回其中长度最大的可整合子数组的长度。[5,0,1,2,4,3,9],最长

2016-01-16 12:36:09 488

转载 频繁出现的数值

题目大意:给一个非降序排列的整数数组a,你的任务是对于一系列询问(i, j),回答ai,ai+1...aj中次数出现最多的值所出现的次数。分析:由于数列是非降序的,所以所有相等的数都会聚集在一起。这样我们就可以把整个数组进行编码。如-1,1,1,2,2,2,4就可以编码成(-1,1),(1,2),(2,3),(4,1)表示(a,b)数组中的a连续出现了b次。用到以下的数据结构

2016-01-12 20:43:03 442

转载 LA4329乒乓比赛_树状数组

题目大意:一条大街上住着n个乒乓球爱好者,经常组织比赛切磋技术。每个人都有一个能力值a[i]。每场比赛需要三个人:两名选手,一名裁判。他们有个奇怪的约定,裁判必须住在两名选手之间,而裁判的能力值也必须在两名选手之间。问一共能组织多少种比赛。分析:考虑第i个人,假设a1到ai-1中有ci个比ai小,那么就有(i-1)-ci个比ai大;同理,如果ai+1到an中有di个比ai小,那么就有(n-i)-d

2016-01-11 21:05:45 666

转载 LA3027合作网络

有N个结点一次 I u v 操作表示把结点u的父结点设为v,距离为|u-v|%1000.输入保证执行指令前u没有父结点一次E u 操作表示询问u到根结点的距离O操作表示结束解题思路:因为题目只查询结点到根结点的距离,所以每棵树除了根结点不能换之外,其他结点的位置可以任意改变,,这恰好符合并查集的特点,但是需要记录附加信息。如果记录每个结点到根的距

2016-01-10 14:55:24 445

转载 UVA11100_旅行

给定n个正整数,把他们划分成尽量少的的严格递增序列(前一个数字必须小于后一个数字)比如6个数,1 1 2 2 2 3,要划分成3个序列{1,2},{1,2},{2,3}输入格式:   输入包含多组数据,每组数据的第一行为整数n,n输出格式:  对于每组数据,输出序列个数的最小值K和这K个序列,如果有多种划分方式,任何一组解均可。分析:第一,首先确定一共有几组,我们可

2016-01-10 14:17:08 1099

转载 UVA11997 K个最小和_优先队列&&K路合并

有K个整数数组,包含K个元素。在每个数组中取一个元素加起来,可以得到k^k个和。求这些和中最小的K个值分析:这题有简化版本的,即2个整数数组A,B,包含K个元素,在每个数组中取一个元素加起来,可以得到k^2个和,求这些和中最小的K个值。我们需要把这k^2个和组织成如下k个有序表.表1:A1+B1表2: A2+B1表k:Ak+B1我们可以用二元组(s,

2016-01-06 21:04:40 402

原创 LA3664_并查集

有一些简单化合物,每种化合物有两种不同的元素组成,如果在这些化合物中存在k个化合物恰好含有k中不同的元素,则是危险的。把每种元素看成节点,节点与节点之间的边为化合物,则在该无向图中若存在环,则有上述情况发生。每次输入一对元素,输入完毕以-1表示,整体输入完毕以EOF表示      样例输入1 23 43 53 12 3

2016-01-06 16:37:24 362

原创 K路归并

K路归并问题可以这样定义如果存在k个已经排好序的数组,每个数组有数目不等的元素,要求出这些数组整体里最小的k个元素代码如下,比较粗制滥造,希望提出批评#include#include #include #include using namespace std;//有k个已经排好序的数组 要求找出m个最小的元素 k为3 m为6int minPos;#define

2016-01-05 14:39:22 883

转载 博弈问题

有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来分析一下要如何才能够取胜。(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。         显然,如

2016-01-03 14:04:08 310

转载 字典树的操作

#include #include #include using namespace std;#define MAX 26typedef struct _Trie{ int num; struct _Trie *next[MAX];}Trie,*PTrie;PTrie root;void InsertTrie(string str){ int len=str.leng

2016-01-02 20:09:13 316

转载 线段树的几种函数

#include using namespace std;const int N=100005;typedef struct _Node{ int left; int right; int max; int sum;}Node;//这种线段树主要记录两种信息 当前最大值与其子树和int a[N]={0,1,5,4,1,6};Node nodeArray[N*4];

2016-01-02 13:27:14 394

转载 vector与优先队列

C++ Vector 使用心得使用需要的头文件:#include Vector:Vector是一个类模板。不是一种数据类型。 Vector是一种数据类型。一、 定义和初始化Vector v1; //默认构造函数v1为空Vectorv2(v1);//v2是v1的一个副本Vector v3(n,i);//v3包含n个值为i的元素Vectorv4(n); //v4含有n个

2015-12-31 15:02:31 1821

转载 一个局部钩子实现

界面如下点击安装按钮,安装局部钩子,在输入框中输入消息,输出框中输出消息在cpp中定义三个全局变量 HHOOK g_hHook=NULL; HWND  g_this=NULL; CString   g_info=_T("");在安装按钮事件中填写void CMFCApplication1Dlg::OnBnClickedInstrall(){g_this=th

2015-12-25 16:30:13 1732

转载 鼠标消息与键盘消息

1,虚拟键(VK_*)键盘上每一个键对应一个扫描码,扫描码是OEM厂商制定的,不同的厂商生产的键盘同样一个按键的扫描码都有可能出现不一致的情况,为了摆脱由于系统设备不一致的情况,通过键盘驱动程序将扫描码映射为统一的虚拟键码表示,从而达到所有的设备都有一个统一的虚拟键,比如回车键的虚拟键是VK_RETURN。Windows定义的虚拟键都定义在WinUser.h这个头文件里面,都是以V

2015-12-24 22:12:35 1145

转载 dos攻击

#include #include #include #include #include #include "protoinfo.h"#pragma comment (lib,"ws2_32.lib")using namespace std;int port;char *DestIp;int threadNum;int maxThread;#define SEQ 0x283

2015-12-22 23:20:49 455

转载 伪造IP发送数据(UDP)

#include #include #include #include #include #include "protoinfo.h"#pragma comment (lib,"ws2_32.lib")using namespace std;#define SOURCEPORT 65432#define DESTPORT 65431USHORT CheckSum(PUSHO

2015-12-21 15:35:30 7647

转载 模拟ICMP过程

首先建立common头文件//////////////////////////////////////////////////// comm.h文件// 包含一些公共函数#ifndef __COMM_H__#define __COMM_H__// 校验和的计算// 以16位的字为单位将缓冲区的内容相加,如果缓冲区长度为奇数,// 则再加上一个字节。它们的和存入一个32位的双

2015-12-18 11:29:54 943

转载 一个简单的嗅探器

#include #include #include #include #include #include using namespace std;#define STATUS_FAILED 0xFFFF //异常出错代码#define MAX_PACK_LEN 65535#define MAX_ADDR_LEN 16#define MAX_PROTO_TEXT_LEN 16

2015-12-15 22:31:03 1101

转载 粒子群算法

#include #include #include #include using namespace std;const int n=2; class PSOTest {// int n=2; //粒子个数,这里为了方便演示,我们只取两个,观察其运动方向 float* y; float* x; float* v; float c1; f

2015-12-13 12:48:18 775

转载 C++父类,不能缺的虚析构函数

规则:如果一个类有可能被继承,那么请为它加上一个虚的析构函数,即使这个析构函数一行代码也没有。   0. 引子    为什么这样说?先看一个例子。先定义3个类: class CBase{public:    long m;    long n;    long o;    CBase()    {

2015-11-14 12:36:21 563

转载 同步设备IO与异步设备IO之异步IO介绍

同步设备IO与异步设备IO之异步IO介绍      设备IO与cpu速度甚至是内存访问相比较都是比较慢的,而且更不可预测。虽然如此,通过使用异步设备IO我们仍然能够创造出更高效的程序。      同步IO时,发出IO请求的线程会被挂起。而异步IO时发出请求的线程不会被挂起,而是可以继续执行。异步IO请求传给了设备驱动程序,被加入到驱动程序的请求队列中,驱动程序负责实

2015-11-09 20:13:53 511

原创 虚函数表的内存分析

代码如下#include #include #include #include using namespace std;class CPerson{ public: CPerson() {} virtual ~CPerson(){} virtual void ShowSpeak() { }};class CChine

2015-11-06 19:13:48 525

原创 浅析C++继承的内存布局

代码如下class Base{  public :   Base()   {      printf("Base");   }  ~Base()   {      printf("~Base");   }  void SetNumber(int number)   {    m_nBase=number;  }  int GetNum

2015-11-04 12:56:40 688

转载 STL总结

1 vector    向量 相当于一个数组    在内存中分配一块连续的内存空间进行存储。支持不指定vector大小的存储。STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacituy()函数返回的大小,当超过此分配的空间时再整体重新放分配一块内存存储,这给人以vector可以不指定vector即一个连续内存的大小的感觉。通常此默认的内存分配能完成大部分情况下的存储。

2015-11-02 18:03:22 363

转载 Windows进程同步之信号量内核对象(Semaphore)

信号量内核对象主要包括三个部分: 使用计数 , 最大资源计数 , 当前资源计数 。使用计数:和其他内核对象一样,用来标识使用该事件对象的不同线程个数; 最大资源计数:表示信号量控制的最大资源的数目;当前资源计数:表示信号量当前可用的资源数目;信号量使用规则如下:如果当前资源计数大于 0 ,信号量处于触发状态; 如果当前资源计数等于 0 ,那么信号量处于未触发状态;系统绝不会

2015-11-02 17:32:03 835

转载 Win32环境下代码注入与API钩子的实现

本文详细的介绍了在Visual Studio(以下简称VS)下实现API钩子的编程方法,阅读本文需要基础:有操作系统的基本知识(进程管理,内存管理),会在VS下编写和调试Win32应用程序和动态链接库(以下简称DLL)。API钩子是一种高级编程技巧,常常用来完成一些特别的功能,比如词典软件的屏幕取词,游戏修改软件的数据修改等。当然,此技术更多的是被黑客或是病毒用来攻击其它程序,截获需要的数

2015-11-01 22:36:40 583

原创 反转链表

注意这里反转时候,要把头指针指向的节点的next域设为NULL,才可以从后面往前输出时候能截止。#include #include #include #include #include #include using namespace std;typedef struct _LinkNode{ int data; struct _LinkNode *next;}Lin

2015-10-18 22:03:04 311

转载 使用特定字符串代替源字符串中空格

比如使用%20代替源字符串中空格要求O(1)的空间复杂度,所以考虑从后往前移动源字符串#include #include using namespace std;void InsertStrintWithWords(char a[100],int len){ //%20 int i=0; int spaceNumber=0; for(i=0;i<=len;i++) {

2015-10-18 20:55:01 431

转载 在有序但是含有空的字符串中查找最左边特定字符串的位置

比如给定一个字符串数组,“”,“ab”,"ab","","","","xx","yy","zz",查找ab字符串最左边的位置就是1,而不是2。如果要找的字符串是空,或者根本没有找到,就返回-1思路采用二分法,但是这里和普通二分不同,要进行判断设要找的字符串为str,start=0,end等于字符串数组最后一个位置如果当前mid处值等于要找的,这时候传给全局变量Pos,但是这个pos

2015-10-18 15:53:23 890

转载 统计一个字符串中每个字母是否只出现了一次

因为字符的范围是0-255 所以建立一个长度为256的布尔数组,每次遍历都把相应位置设置为true,如果在某次遍历时候,相应位置已经是true,则证明该字母已经出现过了,就返回false。另外还可以STL的map来做,也可以用计数排序来做,建立辅助数组,每次相应位置自增1,最后遍历该辅助数组,如果出现大于1的元素,则返回false第一种解法如下#include #include u

2015-10-18 10:23:52 621

原创 字符串的统计字符串

给定一个字符串,统计每一个字母的出现次数比如aabbccc,打印出来就是a_2_b_2_c_3思路还是采取遍历,注意这几个题的思路都比较类似要注意这里的sstream 这里的clear()并非清空了缓冲区,而只是重置标志,如果要重置缓冲区,则应为ss.str(“”)#include #include using namespace std;void CalNumberOfLe

2015-10-18 10:11:42 579

原创 在字符串中删除特定子串,并添加上制定串

比如给定字符串,abc123x123x123,我们要删除里面的123子串,并替换成4567串代码如下第一种方法直接利用STL中string的find和insert方法,第二种是原始的遍历建立辅助数组#include #include using namespace std;void DeleteTheSpecialStringOne(string str,string delSt

2015-10-17 22:37:14 593

原创 组合问题-----从字母表中选择n个字母

这是绿盟考试的一道题,意思是让我们从26个字母中选取n个字母,组成一个子串比如,选取4个,就是abcd,abce,abcf,abcg······等思路采取dfs深搜#include using namespace std;char alphabet[]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p',

2015-10-16 20:53:04 989

原创 去掉字符串中出现k个0的子串

#include #include using namespace std;void DeleteK0(string a,int num){ int i=0; int ZeroNumber=0; bool b=true,bOK=false; int posBegin=0; for(i=0;i<a.length();i++) { if(a[i]=='0') {

2015-10-16 11:17:48 626

thrift要引入的四个jar包

thrift要引入的四个jar包 libthrift-0.9.2.jar log4j-1.2.14.jar slf4j-api-1.5.8.jar slf4j-log4j12-1.5.8.jar 具体教程见https://wenku.baidu.com/view/55ddd03af46527d3240ce084.html 但是这个教程里说的不全,希望这几个小工具能对大家学习thrift有所帮助

2017-11-29

推荐系统实践

推荐系统经典入门书籍,适合初学者入门,例子丰富详细

2018-10-15

linux命令全集

关于linux的命令chm帮助文件,详细而全面,是学习使用linux的良好手册

2013-02-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除