摘要:
pat 1069The Black Hole of Numbers水题,代码如下: 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 bool isSame(char buf[]) 8 { 9 int i = 1;10 while(buf[i] != '\0')11 {12 if(buf[i] != buf[0])return false;13 else i++;14 }15 ret... 阅读全文
摘要:
题目地址:here题目大意:无环连通图也可以视为一棵树,选定图中任意一点作为根,如果这时候整个树的深度最大,该点称为 deepest root。 给定一个图,按升序输出所有 deepest root。如果给定的图有多个连通分量,则输出连通分量的数量。解法:先任选一点A从该点开始dfs,找出距离该点最远的点B,则B是一个deepest root;然后从B点开始dfs,找到距离B最远的所有点,这些点加上B点都是deepest root。对于有多个连通分支的,我们可以通过遍历完所有节点调用dfs函数的次数来判断(当然也可以用并查集来求连通分支数目)。 ... 阅读全文
摘要:
关于素数的基本介绍请参考百度百科here和维基百科here的介绍首先介绍几条关于素数的基本定理:定理1:如果n不是素数,则n至少有一个( 1, sqrt(n) ]范围内的的因子定理2:如果n不是素数,则n至少有一个(1, sqrt(n) ]范围内的素数因子定理3:定义f(n)为不大于n的素数的个数,则 f(n) 近似等于 n/ln(n) (ln为自然对数) ,具体请参考here求不超过n的素数 本文地址算法1:埃拉托斯特尼筛法,该算法的核心思想是:首先标记2~n的数都为素数,然后遍历2~n的数组,如果它是素数,就把它的倍数标记为非素数(即把所有素数的倍数都标记为非素数)代... 阅读全文
摘要:
题目地址:herepat 2-05求集合数据的均方差没什么可说的,大水题 1 #include 2 #include 3 int main() 4 { 5 int n; 6 scanf("%d", &n); 7 int data[n]; 8 double average = 0.0; 9 for(int i = 0; i 2 #include 3 using namespace std; 4 5 int main() 6 { 7 int num,times; 8 scanf("%d%d", &num, ×); 9 i.. 阅读全文
摘要:
题目地址:hereThere areNgas stations along a circular route, where the amount of gas at stationiisgas[i].You have a car with an unlimited gas tank and it c... 阅读全文
摘要:
题目地址:here题目大意:几个小孩站一排,每个小孩有个等级值,现在给小孩发糖,发的时候要遵守2个规则:(1)每个小孩至少一颗糖(2)两个相邻的小孩中,等级大的小孩一定比等级小的小孩糖多,求发糖的数目的最小值。本文提供两个算法,第一个是我自己做题时用的,第二个是网上看题解时看到的算法1:该算法采用分... 阅读全文
摘要:
题目地址:here题目大意:一个整数数组中,只有一个数出现一次,其余数都出现3次,在O(n)时间,O(1)空间内找到这个出现一次的数对于”只有一个数出现一次,其余数出现2次“的情况,很简单,只要把数组中所有数异或的结果就是这个出现一次的数,leetcode上也有这个题目。关于本题:我们用一个大小为3... 阅读全文
摘要:
题目地址:here题目大意:深拷贝一个链表,链表除了含有next指针外,还包含一个random指针,该指针指向字符串中的某个节点或者为空。节点定义为: struct RandomListNode { int label; RandomListNode *next, *random... 阅读全文
摘要:
题目地址:请戳我这一题在leetcode前面一道题word break 的基础上用数组保存前驱路径,然后在前驱路径上用DFS可以构造所有解。但是要注意的是动态规划中要去掉前一道题的一些约束条件(具体可以对比两段代码),如果不去掉则会漏掉一些解(前一道题加约束条件是为了更快的判断是字符串是够能被分词,... 阅读全文
摘要:
题目地址:http://oj.leetcode.com/problems/word-break/简单的动态规划问题,采用自顶向下的备忘录方法,代码如下: 1 class Solution { 2 public: 3 bool dictContain(unordered_set &dict, ... 阅读全文
摘要:
洗牌可以抽象为:给定一组排列,输出该排列的一个随机组合,本文代码中均以字符数组代表该排列算法1-算法3 都是在原序列的基础上进行交换,算法空间复杂度为O(1)算法1(错误):随机交换序列中的两张牌,交换n次(n为序列的长度),代码如下: 1 void Shuffle_randomSwap(char *arr, const int len) 2 { 3 for(int i = 1; i = 0; i--) 4 { 5 int a = rand()%len; 6 int temp = arr[i]; 7 arr[i] = arr[a]... 阅读全文
摘要:
咋一看,这是个很简单的问题,但是如果n是个不确定的数呢?比如服务器每天会收到数以亿计的请求,但是目前服务器端不希望保存所有的请求,只想随机保存这些请求中的m个。试设计一种算法,能够使服务器实时保存m个请求,并使这些请求是从所有请求中的大致等概率被选中的结果。注意:不到一天的结束,是不能提前知道当天所有请求数n是多少的。下面我们分两种情况讨论(1)n已知,(2)n未知。1 n已知可以将问题简化为:从集合A(a_1, a_2, … ,a_n),中随机选取m(0≤m≤n)个元素,使得每个数被选取的概率相等。可以很简单的计算每个数被选取的概率是m/n。如果集合A里面的元素本来就具有随机性, 每个元素在 阅读全文
摘要:
问题描述:这是前缀翻转排序问题,书上的内容这里不详述,给个电子版下载地址本文源码编译环境:codeblock with gcc书上给的源码有点小错误,编译通不过,这里是修改过后的原始代码: 1 /****************************************************************/ 2 // 3 // 烙饼排序实现 4 // 5 /****************************************************************/ 6 #include 7 #include 8 class CPrefi... 阅读全文
摘要:
【目录】不考虑其他进程,cpu画正弦曲线获取总体cpu利用率获取多核处理器单个cpu利用率考虑其他进程,cpu画正弦曲线下面的程序针对多核处理器,可以设置让任何一个cpu显示相应的曲线(本文以正弦曲线为例)代码编译环境:windows 7 64位 酷睿 i5 处理器,vs2010.可以修改CpuSin函数的计算 busySpan 和 idleSpan的部分以显示不同的曲线。下面的代码没有考虑cpu中其他进程的占用情况,这种情况详见第二部分 1 #include 2 #include 3 #include 4 5 //把一条正弦曲线0~2pi 之间的弧度等分200份抽样,计算每个点的振幅... 阅读全文
摘要:
在网上看到的一篇文章,看了以后感触颇深。线性代数课程,无论你从行列式入手还是直接从矩阵入手,从一开始就充斥着莫名其妙。比如说,在全国一般工科院系教学中应用最广泛的同济线性代数教材(现在到了第四版),一上来就介绍逆序数这个古怪概念,然后用逆序数给出行列式的一个极不直观的定义,接着是一些简直犯傻的行列式... 阅读全文
摘要:
【目录】lib dll介绍生成动态库调用动态库生成静态库调用静态库首先介绍一下静态库(静态链接库)、动态库(动态链接库)的概念,首先两者都是代码共享的方式。静态库:在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中,这种库称为静态库,其特点是可执行文件中包含了库代码的一份完整拷贝;缺点就是被多次使用就会有多份冗余拷贝。即静态库中的指令都全部被直接包含在最终生成的 EXE 文件中了。在vs中新建生成静态库的工程,编译生成成功后,只产生一个.lib文件动态库:动态链接库是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不 阅读全文
摘要:
我们在程序中定义了一个基类,该基类有n个子类,为了方便,我们经常定义一个基类的指针数组,数组中的每一项指向都指向一个子类,那么在程序中我们如何判断这些基类指针是指向哪个子类呢?本文提供了两种方法 (1) 自定义类id, (2)typeid一、自定义id如下所示基类father有两个子类son1 和 son2,我们在基类中定义类虚函数id,子类中分别重载了该函数,各个子类返回值都不同 1 class father 2 { 3 public: 4 virtual void fun() 5 { 6 coutid() == 1) 8 cout<<"thi... 阅读全文
摘要:
【目录】引言static_cast 定义dynamic_cast 定义举例:下行转换(把基类的指针或引用转换成子类表示)举例:上行转换(把子类的指针或引用转换成基类表示)举例: static_cast 用于基本类型之间、基本类型指针和空指针间的转换reinterpret_cast 定义举例:reinterpret_cast用法const_cast 定义举例:const_cast用法总结c语言中我们经常使用类似于 int a =(int)3.14等这种强制类型转换标准c++的类型转换符:static_cast 、dynamic_cast、 reindivter_cast、 const_cast, 阅读全文
摘要:
【目录】基本定义c 函数指针使用举例c++ 函数指针使用举例函数指针作为函数参数函数指针作为函数返回值函数指针数组typedef 简化函数指针操作c语言函数指针的定义形式:返回类型(*函数指针名称)(参数类型,参数类型,参数类型,…);c++函数指针的定义形式:返回类型(类名称::*函数成员名称)(参数类型,参数类型,参数类型,….); 以下代码编译环境:codeblocks with gcc in win 7c语言函数指针使用举例:#include #include int fun1(){ printf("this is fun1 call\n"); return 1;} 阅读全文
摘要:
【目录】引言extern “C”的前世今生小心门后的未知世界Q&Ac++调用c的方法c调用c++的方法在你工作过的系统里,不知能否看到类似下面的代码。这好像没有什么问题,你应该还会想:“嗯⋯是啊,我们的代码都是这样写的,从来没有因此碰到过什么麻烦啊~”。你说的没错,如果你的头文件从来没有被任何C++程序引用过的话。这与C++有什么关系呢? 看看__cplusplus(注意前面是两个下划线) 的名字你就应该知道它与C++有很大关系。__cplusplus是一个C++规范规定的预定义宏。你可以信任的是:所有的现代C++编译器都预先定义了它;而所有C语言编译器则不会。另外,按照规范__cpl 阅读全文
摘要:
关于内存映射的基本知识以及一些函数的原型说明,参考博客:http://blog.csdn.net/wcyoot/article/details/7363393下面是我对于读取一个104M文件大小,使用内存映射和传统的读文件方法进行了时间上的对比,两种方法都从该文讲读取300000*34个浮点数。测试环境:vs2010 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 9 10 11 int main()12 {13 clock_t start, finish;14 ... 阅读全文
摘要:
tianyi cui 的背包九讲老版本:http://love-oriented.com/pack/,更新后的版本PDF下载:http://cuitianyi.com/blog/%E3%80%8A%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E4%B9%9D%E8%AE%B2%E3%80%8B2-0-alpha1/新版pdf下载地址2:http://download.csdn.net/detail/tangzhangpeng/5591321本文实现了新版本第一章 “01背包问题”,代码中的注释也是针对新版本。pdf 1.5 小节中的小错误,常数优化应该是,对Ci求和 阅读全文
摘要:
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1561很明显这是个分组的有依赖的背包问题(背包问题的扩展请参考Tianyi Cui 的背包九讲http://love-oriented.com/pack/)。构建树:若攻击城堡 a 要先攻击城堡 b,则 a 是 b 的儿子,这样构建以后是一个森林,添加一个宝物数量为0的节点作为整个森林的树根以后就是一颗树了。递推方程:设dp[a][b] 表示以 a 为根节点的子树,要攻击 b 个城堡所获得的最大金钱数目。其中 a 城堡是已经攻下来的。 则 dp[a][b] = max( dp[a][b]... 阅读全文
摘要:
用c++实现了md5算法。包含 md5.h 和md5.cpp 两个文件。主要参考百度百科 “MD5” 原理的描述:http://baike.baidu.cn/view/7636.htm,代码中变量命名也是参考其中的公式,程序的使用说明在md5.h 文件的末尾注释中。测试结果和百度百科测试例子一致。实现过程中需要注意事项:最后把四个变量A B C D 链接成结果时 ,注意变量高低位的先后顺序,具体参考 LinkResult()方法。md5.h 1 #ifndef _MD5_H_ 2 #define _MD5_H_ 3 4 #include 5 #include 6 using namesp... 阅读全文
摘要:
This is a part of the code in my project "human detection from picture"File "integral_histogram.h"View Code 1 ////////////////////////////////////////////////////////////////////////////////////////////////// 2 // Author: Zhangpeng Tang 3 // Version: 0.1 4 // Date: 2012.03.10... 阅读全文
摘要:
题目地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1025如果我们定义在一个sticks序列中,对所有的 j>i 均满足 : sticks[i].l>=sticks[j].l 且sticks[i].w>=sticks[j].w ,则称这个序列为一个 “簇”。本题就是求把所有的元素分为最少的簇数。假设输入为A,首先把A排序(按 l 的增序,若两个元素的 l 相同,则按 w 的增序),排序后的序列称为B,对序列B按照元素的属性 w 求最长递减子序列的长度(严格递减),记为len。则我们要求得最少簇数 阅读全文
摘要:
问题描述:给定某一组无序的数,求其中最长的单调序列的长度(该单调序列不一定是连续的),如在 5 6 1 2 4 7 5 中最长上升增序列是1 2 4 7 或者1 2 4 5。该题可以用动态规划的方法解决,时间复杂度为O(n^2):设A[t]表示序列中的第t个数,F[t]表示从1到t这一段中以t结尾的... 阅读全文
摘要:
有时候我们在coding的过程中经常需要知道某个变量所能表示的最大或者最小值,在程序设计的基础课上老师肯定也都讲过,只是那么多的数值没办法都记住,下面是我的一些经验,这些也是一个程序员应该掌握的基本知识。下面只以int类型举例,默认 int 32位。首先要明白的是,整数采用的是补码表示方法,忘了补码概念的可以参考http://baike.baidu.com/view/377340.htm。对于有符号整数,最高位是符号位,1表示负数,0表示正数。+0和-0的补码均为:所有位全部置0。int 的最大值二进制表示为:01111111 11111111 11111111 11111111 即2^31. 阅读全文
摘要:
题目地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1074这道题的dP是基于 “最大子段和” 的dp方法例如求数组 1 2 -3 4;-5 6 -1 8 的最大子矩阵和,可以把两行相加得到数组-4 8 -4 12,对这个数组求最大子段和为8+-4+12=16,所以矩阵对应的最大子矩阵为2 -3 4;6 -1 8那么可以利用以上思想,对于m*n的矩阵A,选取他的第 i 行到第 j 行的数据组成子矩阵Aij (j-i+1行n列),Aij 对应的最大子段和可以如下求得:对每一列的值进行累加得到一个一维数组(1*n),对 阅读全文
摘要:
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1027设f[i][j]为基因1的前 i 个核苷酸与基因2的前 j 个核苷酸匹配所得的最高分数。则 f[i][j]= max { f[i-1][j-1]+ score[i][j], //基因1的前 i-1 个核苷酸与基因2的前 j-1 个核苷酸匹配,score[i][j]为核苷酸 i 与核苷酸 j 匹配的得分 f[i-1][j] + score[i][], //基因1的前 i-1 个核苷酸与基因2的... 阅读全文
摘要:
在STL里有这个priority_queue,实现优先队列的结构。在优先队列中,优先级高的元素先出队列。现在在这里说说用法吧先看看语法:Syntax:In their implementation in the C++ Standard Template Library, priority queues take three template parameters:12 template < class T, class Container = vector<T>,class Compare = less<typename Container::value_type&g 阅读全文
摘要:
标准模板库(The Standard Template Library, STL)定义了五种迭代器。下面的图表画出了这几种:inputoutput//forward|bidirectional|random access要注意,上面这图表并不是表明它们之间的继承关系:而只是描述了迭代器的种类和接口。处于图表下层的迭代器都是相对于处于图表上层迭代器的扩张集。例如:forward迭代器不但拥有input和output迭代器的所有功能,还拥有更多的功能。各个迭代器的功能如下:迭代器类别说明输入从容器中读取元素。输入迭代器只能一次读入一个元素向前移动,输入迭代器只支持一遍算法,同一个输入迭代器不能两遍 阅读全文
摘要:
【一】http://blog.sina.com.cn/s/blog_58a84dcc01000bf6.html【二】http://blog.sina.com.cn/s/blog_58a84dcc01000bfa.html【三】http://blog.sina.com.cn/s/blog_58a84dcc01000bf7.html【四】http://blog.sina.com.cn/s/blog_58a84dcc01000bf9.html【五】http://blog.sina.com.cn/s/blog_7ffbb788010109zf.htmlShift/reduceconflictinYac 阅读全文
摘要:
简介:Lex 和 Yacc 是 UNIX 两个非常重要的、功能强大的工具。事实上,如果你熟练掌握 Lex 和 Yacc 的话,它们的强大功能使创建 FORTRAN 和 C 的编译器如同儿戏。Ashish Bansal 为您详细的讨论了编写自己的语言和编译器所用到的这两种工具,包括常规表达式、声明、匹配模式、变量、Yacc 语法和解析器代码。最后解释了怎样把 Lex 和 Yacc 结合起来。Lex 代表 Lexical Analyzar。Yacc 代表 Yet Another Compiler Compiler。让我们从 Lex 开始吧。LexLex 是一种生成扫描器的工具。扫描器是一种识别文本 阅读全文
摘要:
1 STL提供的Sort 算法C++之所以得到这么多人的喜欢,是因为它既具有面向对象的概念,又保持了C语言高效的特点。STL 排序算法同样需要保持高效。因此,对于不同的需求,STL提供的不同的函数,不同的函数,实现的算法又不尽相同。1.1所有sort算法介绍所有的sort算法的参数都需要输入一个范围,[begin, end)。这里使用的迭代器(iterator)都需是随机迭代器(RadomAccessIterator), 也就是说可以随机访问的迭代器,如:it+n什么的。(partition 和stable_partition 除外)如果你需要自己定义比较函数,你可以把你定义好的仿函数(fun 阅读全文
摘要:
该文是以office2010为例有时候某些word文档中有大家想要的图片,但是如果复制-粘贴的话只是获得了word中已经压缩了的图片(粘贴保存后的图片为你在窗口中看到的大小和分辨率),但是制作该文档的作者可能是插入了一幅高清的图片,那么我们怎么获取这个原始图片呢,本文介绍了一个简单的方法。原始word文件为:新建 Microsoft Word 文档.docx修改其后缀名为rar: 新建 Microsoft Word 文档.rar双击该压缩文件后可以看到里面有个word文件夹,双击进去有一个media文件夹,里面包含该word文档中插入的所有的原始图片和视频等媒体文件。 阅读全文
摘要:
一、ADO简介ADO(ActiveXDataObject)是Microsoft数据库应用程序开发的新接口,是建立在OLEDB之上的高层数据库访问技术,请不必为此担心,即使你对OLEDB,COM不了解也能轻松对付ADO,因为它非常简单易用,甚至比你以往所接触的ODBCAPI、DAO、RDO都要容易使用,并不失灵活性。本文将详细地介绍在VC下如何使用ADO来进行数据库应用程序开发,并给出示例代码。二、ADO三个基本接口1、_ConnectionPtr接口该接口返回一个记录集或一个空指针。通常用它来创建一个数据库连接,或执行一条不返回任何结果的SQL语句,如一个存储过程。不推荐使用_Connecti 阅读全文
摘要:
面向TCP连接的socket通信程序:服务端:创建套接字,指定协议族(sockaddr_in),绑定,监听(listen),接受链接(accept),发送或接收数据;客户端:创建套接字,指定协议族,连接,发送或接收数据这几个步骤都是必须的。补充:在发送和接受数据时:write/send/sendto,read/recv/recvfrom都可以用,通常会用:send,recv;但需要注意的是:在面向UDP的socket程序中,发送数据时,如果用sendto的话,就不用connect了;但是,在面向TCP的程序中,在发送数据时,即使sendto,也必须connect,也就是说connect这一步是 阅读全文
摘要:
在Visual Studio 2008以及以后版本中,微软停止了非托管C++的直接WebService引用。不过ATL Server代码已经托管到开源网站上,我们可以找到ATL Server的源代码,编译出Sproxy.exe,这个工具可以根据wsdl文件来生成非托管的代理类。这个代理类还需要配合一些头文件才能一起使用,这个相关的头文件都包含在ATL Server 的源代码内。1. 第一步需要使用sproxy.exe工具来生成代理类。在vs2008以前的版本,比如vs2005,本身就带有这个命令,但在vs2008版,已经把它给去除了。需要去http://atlserver.codeplex.c 阅读全文
摘要:
最近写了个天气预报的小程序,基于c/s模式,client向server发送请求,server定时向所有client发送天气更新,两者之间采用无连接的udp通信。以前几乎没有碰过socket网络编程,我也是边学边做的,下面是我在此过程中遇到的一些问题,希望给刚开始接触网络编程的朋友一些借鉴作用,少走弯路。主要用到两个函数recvfrom,原型如下:函数原型:int recvfrom(int sockfd,void *buf,int len,unsigned int flags, struct sockaddr *from,int *fromlen);sendto,原型如下:int SendTo( 阅读全文