算法与数据结构
文章平均质量分 71
支持英文数字
这个作者很懒,什么都没留下…
展开
-
总结:复杂链表的复制
题目:有一个复杂链表,其结点除了有一个m_pNext指针指向下一个结点外,还有一个m_pSibling指向链表中的任一结点或者NULL。其结点的C++定义如下:struct ComplexNode{ int m_nValue; ComplexNode* m_p原创 2011-09-27 10:15:27 · 273 阅读 · 0 评论 -
sgi stl中list的sort函数实现
sgi stl中list的sort()函数内容如下:// list 不能使用STL 算法 sort(),必须使用自己的 sort() member function,// 因为STL算法sort() 只接受RamdonAccessIterator.// 本函式采用 quick sort.template void list::sort() {// 以下判断,如果是空白串行,原创 2012-05-06 10:24:30 · 1021 阅读 · 3 评论 -
二叉树最近公共父亲节点
找寻二叉树中两个节点的公共父节点中最近的那个节点情况1. 节点只有left/right,没有parent指针,root已知情况2. root未知,但是每个节点都有parent指针情况3. 二叉树是个二叉查找树,且root和两个节点的值(a, b)已知转自:http://blog.csdn.net/hhygcy/article/转载 2012-05-07 09:58:47 · 472 阅读 · 0 评论 -
求数组的子数组之和的最大值
转自:http://blog.csdn.net/v_JULY_v/article/details/6444021题目描述:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -转载 2012-05-11 22:44:22 · 3214 阅读 · 1 评论 -
分层遍历二叉树
转自:http://www.cnblogs.com/miloyip/archive/2010/05/12/binary_tree_traversal.html问题定义给定一棵二叉树,要求按分层遍历该二叉树,即从上到下按层次访问该二叉树(每一层将单独输出一行),每一层要求访问的顺序为从左到右,并将节点依次编号。下面是一个例子:输出:12 34 5 67 8转载 2012-05-12 15:06:04 · 294 阅读 · 0 评论 -
输出二叉树根节点到任意内节点的路径
最近在看二叉树的时候会突然想到,如果知道二叉树的结构,以及二叉树的结构。现在知道树中内节点的指针,怎么查找到从根到节点的路径呢?看到网上大体有两种方法,一种是递归的方法,另外一种是非递归的方法。 方法一:递归二叉树 出自:http://blog.csdn.net/hhygcy/article/details/4660362bool nodePath (bstNode* pRoot,原创 2012-05-12 11:32:46 · 1803 阅读 · 0 评论 -
快速求幂算法
我们知道在数学表达式中pow(x, n)表示求x^n的幂。一般情况下,如果我们要写一个程序的话,最简单的程序可能是这样的:int pow(int x, int n){ int result = 1; while (n != 0){ result = result *x; n = n -1; } return result;}通过使用如上的程序,2^4 = 2 * 2 *原创 2012-05-16 17:25:51 · 1564 阅读 · 0 评论 -
字符串匹配算法
在算法导论的32章字符串匹配一章中已经对字符串匹配做了很详尽的解释。主要的字符串匹配算法就只有这么几种。(详细的再进行补充)1. 朴素的字符串匹配算法思想:在主串中进行不断循环,每一次都会判断后面的m个元素是不是与子串的m个元素相同。这样的时间复杂度是最高的。2. Rabin-Karp算法思想:将字符串转化为整数,使用取模运算,当运算的结果相同时再进行判断字符串是不是相同。这样的匹原创 2012-05-16 20:19:10 · 241 阅读 · 0 评论 -
hdu ACM之Climbing Worm
Problem DescriptionAn inch worm is at the bottom of a well n inches deep. It has enough energy to climb u inches every minute, but then has to rest a minute before climbing again. During the rest, i原创 2012-05-18 17:16:26 · 363 阅读 · 0 评论 -
utf-8中文字数统计
在做下面这个试验的过程中出现了一些错误。现在仍然没有改正,所以建议先不要按照这种方法进行尝试,如果想试用utf-8转换的话,要先试用连接中的方法。最近在做微博字数统计的时候,使用java写程序将获取的微博数据写成了utf-8格式,这让我在以后的程序中受尽苦头,utf-8是一种组合字符,其中英文占一个字符,而中文占三个字符。这样就在字数统计中遇到了很大的困难。但是借助于http://blog.c原创 2012-06-07 17:11:21 · 1437 阅读 · 0 评论 -
大整数乘法和加法
今天晚上突然想到这个大整数的乘法和加法还没有通过自己的验证,所以尽快地写了一个程序。其中遇到的问题有很多。1. 在每次做数组的转换时,要考虑顺序,先加到后一位,再求余2. char转化为int类型的时候要减去0的assic码3. 最后一个问题就是到底结果有多少位,加法的位数最多为最长整数的位数加一;乘法的位数最多是两个整数位数相加。4. 另外一点char *a="9876",这是一原创 2012-06-25 10:50:27 · 1063 阅读 · 0 评论 -
字符串匹配之kmp
转自:http://hi.baidu.com/sector/blog/item/439c14dbe69e3c3932fa1c22.htmlkmp主要就是计算前缀函数e[q]=max{k,kint prefixComp(char p[],int e[]){ int m = strlen(p); int k = 0; e[1] = 0; for(转载 2012-01-05 10:19:41 · 291 阅读 · 0 评论 -
样本收集问题
转自:http://blog.csdn.net/masterluo机器人Rob在一个有n*n 个方格的方形区域F 中收集样本。(i,j)方格中样本的价值为v(i,j),如下图所示Rob 从方形区域F 的左上角A点出发,向下或向右行走,直到右下角的B 点,在走过的路上,收集方格中的样本。Rob 从A点到B 点共走2次,试找出Rob 的2条行走路径,使其取得的样本总价值最大。给定方转载 2011-11-29 16:31:17 · 837 阅读 · 0 评论 -
搜狗的一道笔试题
原帖:搜狗笔试题一个长度为n的数组a[0],a[1],...,a[n-1]。现在更新数组的各个元素,即a[0]变为a[1]到a[n-1]的积,a[1]变为a[0]和a[2]到a[n-1]的积,...,a[n-1]为a[0]到a[n-2]的积。程序要求:要求具有原创 2011-09-27 21:28:11 · 385 阅读 · 0 评论 -
n重幂计数问题
问题:给定n个变量x1,x2,x3…xn。将这些变量依次作为底和幂,可得n重幂如下xn …x3x2x1上述的n重幂是不确定的,当其中加入适当的括号之后,才能成为一个确定的n重幂。不同的加括号方式导致不同的n重幂。例如,当n=4时,全部的4重幂有5个原创 2011-10-01 10:36:54 · 665 阅读 · 0 评论 -
独立任务最优调度问题
转自:http://hi.baidu.com/liongg/blog/item/63d6a9ec19454c2262d09f01.html(有修改)问题:独立任务最优调度,又称双机调度问题:用两台处理机A和B处理n个作业。设第i个作业交给机器A处理时所需要的时间是a[转载 2011-09-30 16:37:17 · 2826 阅读 · 1 评论 -
关于并查集的定义
在一些应用中,需将n个不同的元素划分成一组不相交的集合。开始时,每个元素自成一个集合,然后按一定顺序将属于同一组元素的集合合并。期间要反复用到查询某个元素属于哪个集合的运算。适合于描述这类问题的抽象数据类型称为并查集。他的数学模型是一组不相交的集合S=(A,B,C,……),他支持原创 2011-10-09 21:12:05 · 214 阅读 · 0 评论 -
最长公共子序列
最长公共子序列问题描述:字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列。令给定的字符序列X=“x0,x1,…,xm-1”,序列Y=“y0,y1,…,yk-1”是X的子序列,存在X的一个严格递增下标序列,i1原创 2011-10-18 20:21:41 · 196 阅读 · 0 评论 -
石子合并问题
转自:http://blog.csdn.net/lyflower/article/details/2150239在一个圆形操场的四周摆放着n堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为转载 2011-10-18 22:28:12 · 246 阅读 · 0 评论 -
对区间的模糊排序
转自:http://blog.chinaunix.net/space.php?uid=12454074&do=blog&id=2935121 本文介绍对区间的模糊排序算法的实现,对应于《算法导论》(第二版)P164,思考题7-6。 作者:tyc611.cublog.cn,2008-03-02问题描述 考虑这样的一种排序问题,即无转载 2011-10-22 22:34:33 · 289 阅读 · 0 评论 -
数字三角形问题
问题描述:有一个形式如下的数字三角形: 7 3 8 8 1 0 2 7 7 4 4 5 2 6 5从三角形顶点,沿左斜线方向或右斜线方向下降到三角形底边的路线是一条合法路径。例如,图中用红色标出的路径就是合法的;我原创 2011-10-25 10:11:02 · 3504 阅读 · 0 评论 -
矩阵乘法——Strassen矩阵乘法
Strassen矩阵乘法转自:http://218.22.18.86/info/Data_Structures_and_Algorithms/algorithm/commonalg/misc/strassen/strassen.htm矩阵乘法是线性代数中最常见的运算之一,它在数值计算中有广泛的应用。若A和B是2个n×n的矩阵,则它们的乘积C=AB同样是一个n×n的矩阵。A和B的乘积转载 2011-11-04 16:47:16 · 455 阅读 · 0 评论 -
动态规划--最大k乘积问题
最大k乘积问题描述 问题描述:设I是一个n位十进制整数。如果将I划分为k段,则可得到k个整数。这k个整数的乘积称为I的一个k乘积。试设计一个算法,对于给定的I和k,求出I的最大k乘积。编程任务:对于给定的I 和k,编程计算I 的最大k 乘积。数据输入:由文件input.txt提供输入数据。文件的第1 行中有2个正整数n和k。正整数n是序列的长度;原创 2011-11-29 15:38:22 · 1918 阅读 · 0 评论 -
两个整数求和,不使用加法 转自和雨
int add(int a, int b) { int part1 = (a&b) int part2 = a ^ b; if((part1 & part2) == 0) { return part1 ^ part2; } else { return add(part1, part2); } }转载 2012-08-20 11:59:53 · 356 阅读 · 0 评论