自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 计算字符串的相似度

Int CalculateStringDistance(string strA, int pABegin, int pAEnd, string strB, int pBBegin, int pBEnd){if (pABegin > pAEnd){if (pBBegin > pBEnd)return 0;elsereturn pBEnd - pBBegin + 1;}

2015-04-27 22:25:03 384

原创 字符串移位包含的问题

题目描述:    给定两个字符串s1和s2,要求上是否能够通过s1作循环移位(rotate)得到的字符串包含。例如s1=AABCD和s2=CDAA,返回true,给定s1=ABCD和s2=ACBD,返回false.解法一:   可以使用最直接的方法对s1进行循环移位,再进行字符串包含的判断,从而遍历其所有的可能性。代码如下:char src[5] = "AABCD"

2015-04-27 21:33:38 668

原创 signal函数

调用POSIX sigaction函数的signal函数。#include "unp.h"Sigfunc* signal(int signo, Sigfunc * func)//第一个参数为信号名,第二个参数或为指向函数的指针,或为常值SIG_IGN或SIG_DFL.{struct sigaction act, oact;act.sa_handler = func;

2015-04-27 15:11:06 454

原创 求二叉树中节点的最大距离..........

题目描述:       如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义“距离”为两个节点之间的边的个数。写一个程序,求一颗二叉树中相距最远的两个节点之间的距离。分析与解答:根据相距最远的两个节点一定是叶子节点这个规律,我们可以进一步讨论。对于任意一个节点,以该节点为根,假设这个根有K个孩子结点,那么相距最远的两个节点U和V之间的路径与这

2015-04-27 14:21:44 801

原创 求上排的数在下排出现的次数

题目:      举一个例子:      数值:0,1,2,3,4,5,6,7,8,9      分配:6,2,1,0,0,0,1,0,0,0      0在下排出现了6次,1在下排出现了2次。      2在下排出现了一次,。。。。。     以此类推#include using namespace std;#define len 10cl

2015-04-27 14:14:04 658

原创 求最小的k个元素

题目:     输入n个整数,输出其中最小的k个。    例如:1,2,3,4,5,6,7,8    则最小的4个数为1,2,3,4,#includeusing namespace std;class MinK{public:MinK(int *arr, int si) :array(arr), size(si){}bool kmin(int k, in

2015-04-27 13:28:36 612

原创 区间重合判断

题目描述:给定一个源区间,

2015-04-26 19:58:24 377

原创 TCp客户/服务器程序示例

1. TCP回射服务器程序:main函数#include "unp.h"int main(int argc, char **argv){int listenfd, connfd;pid_t childpid;socklen_t clilen;struct sockaddr_in cliaddr, servaddr;listenfd = Socket(AF_INET,

2015-04-26 15:17:34 847

原创 unix网络编程readn,writen,readline包裹函数

一、Readn包裹函数/* include readn */#include "unp.h"ssize_t /* Read "n" bytes from a descriptor. */readn(int fd, void *vptr, size_t n){size_t nleft;ssize_t nread;char *ptr;ptr = vptr;

2015-04-26 13:35:29 957

原创 数组分割

题目描述:         有一个没有排序,元素个数为2n的正整数数组,要求:如何能把这个数组分割为元素个数为n的两个数组,并使两个子数组的和最接近。         分析:    题目的本质就是要从2n个整数中找出n个,使得它们的和尽可能地靠近所有整数之和的一半。解法一和二:伪代码如下:定义:Heap[i]表示存储从arr中取i个数所能

2015-04-25 20:50:28 770

原创 判断是否为二叉树的后续遍历

题目要求:         判断整数序列是不是二元查找树的后续遍历结果。        输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。        如果返回true,否则返回false.     因此返回true.如果输入7,4,6,5,没有那棵树的后序遍历的结果是这个序列,因此返回false.解析:     这是二叉查找树树后序遍历重建问题

2015-04-24 22:08:17 614

原创 数组循环移位

题目描述:      设计一个算法,把一个含有N个元素的数组循环右移K位,要求时间复杂度为O(N),且只允许使用两个附加变量。解法一:     可以每次将数组中的元素右移一位,循环K次。abcd1234-->4abcd123-->34abcd12-->234abcd1-->1234abcd.伪代码如下:RightShift(int *arr, int N, int K)

2015-04-24 21:30:23 599

原创 求数组中最长递增子序列

题目描述:  求一个一维数组(N个元素)中的最长递增子序列的长度。例如:在序列1,-1,2,-3,4,-5,6 ,-7中,其最长的递增子序列为1,2,4,6分析:解法一:无houxiao

2015-04-24 20:14:45 680

原创 socket的客户端-服务器程序

客户端程序:   通过服务器返回当前的时间和日期。#include "unp.h"#include "my_err.h"int main(int argc, char** argv){        int sockfd, n;        char recvline[MAXLINE + 1];        struct sockaddr_in servaddr

2015-04-24 15:54:49 870

原创 求数组中的重复值

题目描述:     假设 你用一个1001个整数组的数组,这些整数是任意排列的,但是你知道所有的整数都在1到1000(包括1000)之间,此外,除一个数字出现两次外,其他所有数字只出现一次。假设你只能对这个整数做一次处理,用一种算法找出重复的那个数字。(不用辅助的存储方式)1.sum up all the number,then subtract the sum from 1001

2015-04-24 12:44:52 823

原创 readn,writen和readline函数

readn函数:从一个描述符读n字节#include "unp.h"ssize_t readn(int fd, void* vptr, size_t n){size_t nleft;ssize_t nread;char *ptr;ptr = vptr;nleft = n;while (nleft > 0){if ((nread = read(fd, pt

2015-04-24 09:16:11 1583

原创 子数组之和的最大值(二维)

解法一:     最直接的方法,枚举一个矩形区域,然后再求这个矩形区域中元素的和。int max(int x, int y){return (x > y) ? x : y;}//@parameters//n,行数//m,列数int MaxSum(int *A, int n, int m){maximum = -INF;for (i_min = 1;

2015-04-23 21:58:47 517

原创 求数组的子数组之和的最大值

解法一:先明确题意:  1.题目说的子数组,是连续的。  2.题目只需要求和,并不需要返回子数组的具体位置。  3.数组的元素是整数,所以数组可能只包含有正整数,零,负整数。举几个例子:数组:[1,-2,3,5,-3,2]应返回8.数组:[0,-2,3,5,-1,2]应返回9。数组:[-9,-2,-3,-5,-3]应返回-2。最直接的方法:

2015-04-23 20:35:12 463

原创 子数组的最大乘积

题目:      给定一个长度为N的整数数组,只允许用乘法,不能用除法,计算任意(N-1)个数的组合乘积中最大的一组,并写出算法的时间复杂度。解法一:解法二:

2015-04-23 20:23:08 492

原创 网络编程之inet_pton,inet_ntop,sock_ntop函数

inet_pton        inet_pton函数转换由strptr指针所指的字符串,并通过addrptr指针存放二进制结果。若成功则为1,若输入不是有效的表达式格式则为0,若出错则为-1;int inet_pton(int family, const char* strptr, void* addrptr){if (family == AF_INET){st

2015-04-23 14:19:20 6252

转载 字符串比较

题目:比较两个字符串,O(n)时间。int strcmp(char*p1, char*p2){while (*p1 != '\0'&&*p2 != '\0'&&*p1 == *p2){p1++; p2++;}if (*p1 == '\0'&&*p2 == '\0')return 0;if (*p1 == '\0')return -1;if (*p

2015-04-22 22:34:16 439

原创 快速寻找满足条件的两个数

题目:      能否快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的数字。解法一: 穷举法,从数组中任意取出两个数字。计算两者之和是否为给定的数字。其时间复杂度为N(N-1)/2,即O(N2).解法二:解法三:       直接对两个数字的和进行一个有序的遍历,从而降低算法的时间复杂度。       首先对数组进行排序,时间

2015-04-22 22:05:48 635 1

原创 寻找最近点对

解法一:     数组中总共包含N个数,把它们的两两差值求出来,就可以得到最小值对。时间复杂度为O(N2).N2值N的平方代码如下:double MinDifference(double arr[], int n){if (n return 0;double fMinDiff = fabs(arr[0] - arr[1]);for (int i = 0; i

2015-04-22 21:17:22 600

原创 寻找数组中的最大值最小值

解法一:      分别求出数组中的最大值和最小值。先扫描一遍数组,找出最大的数和最小的数。需要比较2*N次。解法二:     一般情况下,最大值和最小值不相同。所以把数组分成两部分,然后再从这两部分中分别找出最大值和最小值。      最后,从奇偶数位上分别求出Max=9,Min=3,各需要比较N/2次,整个算法共需要比较1.5*N次。解法三:

2015-04-22 20:12:09 1545

原创 颠倒句子中词的顺序

分析:   先颠倒整个句子,然后。颠倒词的顺序。例如: I am a teach.    颠倒后:teach a am i//Reverse the whole string,then reverse each word.char* reverseFixlen(char *str,int n){ char *p=str+n-1; char *start=str; while(

2015-04-20 22:26:37 2732

原创 斐波那契数列--之优化(Fibonacci)

斐波那契数列由如下递推关系式定义:代码如下:int Fibonacci(int n){ if(n<=0) return 0; else if(n==1) return 1; else return Fibonacci(n-1)+Fibonacci(n-2);}解法一:递推关系的优化解法二:求解通项公式 解

2015-04-20 21:39:11 501

原创 找符合条件的整数

题目:     任意给定一个正整数N,求一个最小的正整数M(M>1),使得N*M的十进制表示形式只含有1和0 。分析:     将问题“求一个最小的正整数M,使得N*M的十进制表示形式里只含有1和0”转换为求一个最小的正整数X,使得X的十进制表示形式里只含有1和0,并且X被N整除。

2015-04-20 21:23:18 837

原创 最大公约数问题

解法一:      辗转相除法,使用原理为f(x,y)表示x,y的最大公约数,取k=x/y,b=x%y,则x=ky+b,如果一个数能够同时整除x和y,则必能同时整除b和y,而能够同时整除b和y的数也必能同时整除x和y,即x和y的公约数与b和y的公约数相同的,其最大公约数也是相同的,则有f(x,y)=f(y,x%y)(y>0).具体代码如下:int gcd(int x,int y){

2015-04-20 20:09:53 604

原创 寻找最大的K个数

解法一:        利用快速排序的思想,假设N个数存储在数组S中,我们从数组S中随机找出一个元素X,把数组分为两部分Sa和Sb,Sa中的元素大于等于X,Sb中的元素小于X。伪代码如下:Kbig(S,k)    if(k    if (length S            return S(Sa,Sb)=Partition(S)return Kbig(S

2015-04-19 20:47:38 511

原创 统计1的个数

题目描述:       给定一个十进制数N,写下从1开始,到N的所有整数,然后数一下其中出现的所有“1”的个数。例如:N=2;写下1,2。这样只出现了1个“1”N=12;我们会写下1,2,3,4,5,6,7,8,9,10,11,12.这样,1的个数为5问题:1.写一个函数f(N),返回1到N之间出现的“1”的个数。2.在32位整数范围内,满足条件”f(N)=N"

2015-04-19 19:28:06 509

原创 寻找发帖“水王”

题目描述:      “水王”指发帖(和回帖)数超过贴子总数的一半。快速找出这个“水王”的算法解法一和解法二:解法三:        避免排序的方法,如果每次删除不同的ID,那么,在剩下的ID列表中,"水王"ID出现的次数仍然超过总数的一半。总的时间复杂度为O(n)。且只需要常数的额外内存。Type Find(Type* ID,int N){    Type can

2015-04-19 19:08:49 321

原创 颠倒字符串

题目:颠倒一个字符串,优化速度,优化空间。void reverse(char *str){reverseFixlen(str,strlen(str));}void reverseFixlen(char*str,int n){char* p=str+n-1;while (str{char c=*str;*str=*p;*p=c;++st

2015-04-19 11:41:14 586

原创 倒排链表(修订版)

题目:Node* reverse(Node* head){ if (head==NULL) return head; if(head->next==NULL) return head; Node* ph=reverse(head->next); head->next->next=head; head->next=NULL;

2015-04-18 22:30:18 1589 5

翻译 算法第9题

题目:             你让一些人为你工作了七天,你要用一根金条作为报酬。金条被分成七小块,每天给出一块。 如果你只能将金条切割两次,你怎样分给这些工人?分析:       不是给出去的就收不回来了,可以用交换的方法 把金条分成三段(就是分两次,或者切两刀),分别是整根金条的1/7、2/7 4/7 第一天:给1/7的, 第二天:给

2015-04-18 22:07:18 447

原创 算法题8

题目:        有两个房间,一个房间有3盏灯。但是没有开关。在另一个房间里控制着三盏灯的三个开关。这两个房间是分割开的,从一个房间看不到另一个房间的情况。要求受训者分别进房间一次,然后判断这三盏灯分别是由那个开关控制的。答案: 把开关编号为1,2,3。在3个开关房间里,打开开关1,开上几分钟,再关掉,打开开关2,马上进入3盏灯的房间,亮的灯当然是开关2控制,用手摸另

2015-04-18 21:56:42 414

原创 求二进制中1的个数

题目描述:对于一个字节(8bit)的变量,求其二进制表示中“1”的个数,要求算法的执行效率尽可能的高。解法一:      除以一个2,原来的数字将减少一个0,如果除的过程中有余,那么就表示当前位置有一个1.代码如下:int Count(int v){int num=0;while (v){      if (v%2==1)         num++

2015-04-18 20:58:41 475

原创 算法100题(第7题)

题目:判断两个单链表是否相交给出两个单链表的头指针,比如h1,h2,判断这两个链表是否相交。为了简化问题,假设两个链表均不带环问题扩展:1.如果链表可能有环列。2.如果需要求出两个链表相交的第一个节点列?struct Node{int data;    Node* next;};//if there is no cycleint isJoinedSi

2015-04-17 22:07:51 377

原创 iterator_traits大杂烩

templatestruct iterator_traits{typedef typename Iterator::iterator_category iterator_category;typedef typename Iterator::value_type value_type;typedef typename Iterator::difference_type diff

2015-04-17 20:14:59 416

原创 advance 源码

advance函数的实现:templatevoid advance_II(InputIterator& i,Distance n){   for (;n>0;--n,++i) {}}templatevoid advance_BI(BidirectionalIterator& i,Distance n){if (n>=0)  for(;n>0;--n,++

2015-04-17 19:55:42 723

原创 反向复制reverse_copy

templateOutputIterator reverse_copy(BidirectionalIterator first,BidirectionalIterator last,OutputIterator result){while (first!=last){--last;*result=*last;++result;}return result;}

2015-04-16 22:23:56 1417

面向对象方法和c++描述

数据结构(用面向对象方法和C++描述,很细节的讲解了各种数据结构,和详细的c++代码

2015-12-07

网上书城文档

这是一篇关于.NET语言开发的网上书城系统,希望对下载者有用

2013-03-11

当代礼仪的资料

这是一篇关于当代礼仪的资料,希望对下载的人们有帮助

2013-03-11

空空如也

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

TA关注的人

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