编程珠玑
文章平均质量分 78
长弓的坚持
这个作者很懒,什么都没留下…
展开
-
编程珠玑——第八章习题10扩展和习题11
习题10求解的是查找数组中总和最接近于0的子数组转载 2014-11-07 10:58:12 · 621 阅读 · 0 评论 -
编程珠玑第七章 粗略估算
过简单的粗略估算我们能够得到接近需要复杂计算的真实值,实在是让人惊叹估算的魅力。 在日常生活中,我们常常会遇到需要快速算出粗略值的时候,以便对问题有一个大体的把握,这个时候粗略估算的技巧就显得十分重要了。本章介绍了“量纲检验”、“模9法”、“72法则”、“Little定律”等,而更多的技巧需要我们在日常生活中根据实际问题运用常识开动脑筋来把握。 量纲检验转载 2014-11-05 20:35:53 · 897 阅读 · 0 评论 -
编程珠玑第14章
内容来自互联网,自己做了一定的修改一,堆 1)堆:任何结点的值都小于或等于其孩子的值的完全二叉树为小根堆 任何结点的值都大于或等于其孩子的值的完全二叉树为大根堆 为了方便使用完全二叉树的性质,数组从下标1开始。 这样:leftChild = 2*i ;转载 2014-11-20 20:58:42 · 508 阅读 · 0 评论 -
求最长公共子串
最长公共子串(Longest Common Substirng)和最长公共子序列(Longest Common Subsequence,LCS)的区别为:子串是串的一个连续的部分,子序列则是从不改变序列的顺序,而从序列中去掉任意的元素而获得新的序列;也就是说,子串中字符的位置必须是连续的,子序列则可以不必连续。方法·1:暴力穷举法 关键代码:if(s1[i+len] == s2[j])转载 2014-11-25 21:08:21 · 632 阅读 · 0 评论 -
编程珠玑第八章——分治算法求解数组中的最大的连续和
关键在于把数组分为两个部分。最大的连续和要么在两个原创 2014-11-06 00:18:27 · 698 阅读 · 0 评论 -
编程珠玑第六章习题二——C++实现一个数的因子分解
引申为一道题目:将大于1的自然数N进行因式分解,满足N=a1*a2*a3…am 编一程序,对任意的自然数N, 求N的所有形式不同的因式分解方案总数。 如N=12,共有8种分解方案,它们分别是: 12=12 12=6*2 12=4*3 12=3*4 12=3*2*2 12=2*6 12=2*3*2 12=2*2*3 Input 输入文件仅有一行包含一个整数N。O原创 2014-11-05 17:03:25 · 1950 阅读 · 0 评论 -
最长递增子序列
参考:http://www.ahathinking.com/archives/117.html(一个非常牛的人)http://www.felix021.com/blog/read.php?1587(牛人)一个各公司都喜欢拿来做面试笔试题的经典动态规划问题,互联网上也有很多文章对该问题进行讨论,但是我觉得对该问题的最关键的地方,这些讨论似乎都解释的不很清楚,让人心中不快,所以自己想彻原创 2014-11-26 23:44:22 · 462 阅读 · 0 评论 -
qsort七种排序方法
qsort 包含在头文件 #includeqsort ( 哪个 , 长度 , 大小, cmp)一、对int类型数组排序 [cpp] view plaincopyprint?int num[100]; int cmp ( const void *a , const void *b ) {转载 2014-11-07 00:32:42 · 549 阅读 · 0 评论 -
编程珠玑第八章——习题10查找数组中总和最接近0的子数组
方法1:这个问题和求子数组最大值优点相似,但解法不同,如果按照求子数组最大值的方法来求解,我们可以求出以j为截止的最大值和最小值,如果最大值和最小值都>0,那么最小值即为所求,如果都0而最小值原创 2014-11-06 16:08:23 · 622 阅读 · 0 评论 -
编程珠玑第15章
一、单词(1)为文档中包含的单词生成一个列表?解答: 方法一:用到标准模板库中的sets和strings#include iostream>#include set>#include string>using namespace std;int main(int argc, char **argv){转载 2014-11-23 15:53:19 · 718 阅读 · 0 评论 -
最长重复数组
最长重复数组,具体可以参考编程珠玑15章给定一个文本文件作为输入,插在其中最长的重复子字符串。例如,“Ask not what your country can do for you, but what you can do for your country”中最长的重复字符串是“can do for you”,第二长的是“your country”。方法一:双重for循环转载 2014-12-01 08:36:38 · 439 阅读 · 0 评论 -
最长不重复子串
最长不重复子串,子串要求一定是连续出现的http://www.cnblogs.com/xinsheng/p/3580186.htmlhttp://www.ahathinking.com/archives/123.html//注意这里求得是最长不重复子串//子串要求他们是连续的//设置两个游标, 右边游标向右走, 出现重复字符时, 左边的游标向右走#includeusin转载 2014-12-01 11:17:40 · 406 阅读 · 0 评论 -
最长公共子序列(LCS)
参考:http://blog.chinaunix.net/uid-26548237-id-3374211.htmlhttp://www.ahathinking.com/archives/115.htmlhttp://blog.csdn.net/v_july_v/article/details/6695482最长公共子串(Longest Common Su转载 2014-11-25 17:08:18 · 417 阅读 · 0 评论 -
最长回文子串
Problem Description给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度.回文就是正反读都是一样的字符串,如aba, abba等 Input输入有多组case,不超过120组,每组输入为一行小写英文字符a,b,c...y,z组成的字符串S两组case之间由空行隔开(该空行不用处理)字符串长度len转载 2014-12-02 07:44:21 · 465 阅读 · 0 评论 -
编程珠玑第五章习题五——C++实现二分搜索时进行错误检测
一,概述 主要讲解如何保证编程的正确性。在程序中加入断言(assert(断言内容) //如果错误,则终止程序。否则正常执行)。 typdef //声明自定义类型 typedef int size; //声明int 型整数的别名 size array[4];转载 2014-11-05 10:24:10 · 721 阅读 · 0 评论 -
编程珠玑第三章习题答案
1 税收问题.if-else语句的每个分支的形式都差不多,我们可以用数组来使循环简单一点。数组中每个点表明一个阶段,用level[i]表示阶段i的起始点,tax[i]表示阶段i的税率。然后就是输入一个收入,利用二分搜索找到一个最接近于这个收入的税率计算的分段点,当然也可以不用二分搜索找到这个分段点。int level[100] = { 2200, 2700, ....}doub转载 2014-11-02 22:55:35 · 2369 阅读 · 0 评论 -
编程珠玑第四章习题答案
主要内容来自于互联网,自己做了一定的转载 2014-11-04 13:32:05 · 1946 阅读 · 0 评论 -
编程珠玑第九章——习题
习题7 计算输入数字中1的个数转载 2014-11-07 16:43:11 · 759 阅读 · 0 评论 -
数据结构基础-Hash Table详解
理解Hash哈希表(hash table)是从一个集合A到另一个集合B的映射(mapping)。映射是一种对应关系,而且集合A的某个元素只能对应集合B中的一个元素。但反过来,集合B中的一个元素可能对应多个集合A中的元素。如果B中的元素只能对应A中的一个元素,这样的映射被称为一一映射。这样的对应关系在现实生活中很常见,比如: A -> B转载 2014-10-27 22:40:30 · 632 阅读 · 0 评论 -
编程珠玑第一章习题解答
第一题 如果不缺内存,如何使用一个具有库的语言来实现一种排序算法以表示和排序集合?解答: 首先,C++有实现排序的库函数:sort,该函数实现的是快速排序;另外,C++的容器map和set均可以实现排序,由于map和set的实现是红黑树,所以具有自动排序功能,当然,这个需要数据不能重复; 下面为了复习下快速排序的实现,重新实现了一遍,代码如下所示。转载 2014-10-27 16:52:32 · 1597 阅读 · 0 评论 -
编程珠玑 第一章第9题 空间换时间的数据结构问题
One problem with trading more space to use less time is that initializing the space can itself take a great deal of time. Show how to circumvent this problem by designing a technique to initialize an转载 2014-10-27 22:23:09 · 633 阅读 · 0 评论 -
编程珠玑11章——快速排序的改进
#includeusing namespace std;void swap(int*a,int*b){int temp=*a;*a=*b;*b=temp;}void quicksort(int* a,int start,int end){if(start>=end)return;int temp=a[start];int i=start;原创 2014-11-10 23:12:49 · 729 阅读 · 1 评论 -
编程珠玑十一章课后题答案
1 通过排序来查找数组的最大值和最小值通常属于过度使用。原创 2014-11-12 19:43:38 · 1062 阅读 · 0 评论 -
编程珠玑第12章习题
1 产生[m,n]范围内的随机整数转载 2014-11-13 10:13:27 · 741 阅读 · 0 评论 -
给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数
给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数。 1、在文件中至少存在这样一个数? 2、如果有足够的内存,如何处理? 3、如果内存不足,仅可以用文件来进行处理,如何处理?答案: 1、32位整数,包括-2146473648~~2146473647,约42亿个整数转载 2014-10-28 20:06:18 · 1900 阅读 · 0 评论 -
将一个n元一维向量向左旋转i个位置。例如,当n = 8且i = 3时,向量abcdefgh旋转为defghabc
void Swap(char *a, char *b){ char temp = *a; *a = *b; *b = temp;}void Reverse(char *str, int left, int right){ if(str == NULL || left >= right) {转载 2014-10-28 20:25:20 · 536 阅读 · 0 评论 -
C++获取当前时间和计算程序运行时间的方法
#include #include //关键 using namespacestd; int main(){ clock_t start, finish; doubletotalTime; start = clock(); //需要测试运行时间的代码段放在这 finish = clock();转载 2014-10-27 16:38:47 · 881 阅读 · 0 评论 -
编程珠玑第二章习题答案
转载自1、提供单词和词典,找到该单词的所有变位词,可以事先花时间和空间处理下该词典。因为要查找变位词,事先遍历词典,得到每个单词签名,并建立签名列表,签名列表的每个项包含了该签名的所有单词。有了这个列表,直接得到提供单词的签名去遍历签名列表就能找到所有变位词。2、给定一个4300000000个32位整数的顺序文件,请问你如何可以找到一个至少出现两次的整数因为2^32转载 2014-10-28 22:31:08 · 2099 阅读 · 0 评论 -
给定一个单词集合,找出可以相互转换的集合。比如abc bca cba都可以相互转换(变位词)
算法如下:单词按照字母进行排序,单词间进行排序,这样相同标识的单词聚集到一起这里用C++来写了。 [html] view plaincopyvoid gen_label(vectorstring> &dict, mapstring, vectorstring> >&rec) { for (int i转载 2014-10-28 20:44:15 · 973 阅读 · 0 评论 -
编程珠玑13章
1.问题:设计一个数据结构,能够有序存储一组整数,便于我们查找,类似与STL中的set集合 集合建立时,传入两个参数,一个是maxNumbers,表示集合元素的最大个数,另一个是maxValue,表示集合元素的范围,所有元素都小于maxValue,maxValue会被用作哨兵。 在后面的程序中,虽然设置了默认值INT_MAX,但最好不要使用,因为它可能会使程序效率很低,特别是位转载 2014-11-18 20:21:10 · 468 阅读 · 0 评论 -
字符串的相似度
参考:http://www.ahathinking.com/archives/116.htmlhttp://blog.csdn.net/orbit/article/details/6649322定义字符串的相似度有很多种度量,像前面说的最长公共子序列就是其中的一种,本节所说的“编辑距离”也算是一种,简单来说,编辑距离就是将两个字符串变成相同字符串所需要的最小操作次数转载 2014-12-03 14:48:15 · 530 阅读 · 0 评论