上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 22 下一页

2014年3月27日

摘要: 问题分析 输入:一个包含了4 300 000 000个32位整数的文件( 已排序 其中可能有重复出现的数字 ) 输出:一个在这个文件中重复出现过了的数字 约束:内存消耗应尽量小解答思路 分析题目,可以得知: 1. 32位整数最多能包含4294967296个整数 2 #include 3 #include 4 5 using namespace std; 6 7 // 正式版修改: N改为2150000000 8 #define N 4 9 10 /* 11 * 该函数将文件流io对应文件覆盖拷贝到文件流iot所对应文件 12 * 最后再重置文件流 1... 阅读全文
posted @ 2014-03-27 15:33 空山悟 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 问题分析 输入:一个包含了4 300 000 000个32位整数的文件( 其中可能有重复出现的数字 ) 输出:一个在这个文件中重复出现过了的数字 约束:无解答思路 第一章中,我们学习了如何用位向量进行一个空间代价很小的排序。在第一章的一些习题中,位向量的每一位代表的数就是该位的位序:位为1时表示存在这个数,0则表示不存在。本题也可以建立一个类似的位向量。但,本题的位向量又有所不同:因为要体现出重复的数据,因此一个数至少要两个位才能表示。故在这个新的位向量中,a ( 位表示的数 )和b ( 位序的关系 )不是a = b而是a * 2 = b1以及a*2 + 1 = b2 ( b1表示a对... 阅读全文
posted @ 2014-03-27 15:23 空山悟 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 问题分析 输入:一个任意的单词和一个内含多个乱序单词的字典文件 输出:该单词在字典中的所有同位词 约束:允许事先对字典进行预处理解决思路 上问的程序有个缺点 - 我们必须遍历完整个字典文件才能输出所有结果。现在下问允许我们事先对字典文件进行预处理,那么可以先对字典文件的单词按其标识符排序,这样相同标识符的单词都聚集在了一起,从而避免了对整个文件的检索。下面的代码用C++中的关联容器Multimap实现了这个思想。代码实现 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 8 #def... 阅读全文
posted @ 2014-03-27 15:13 空山悟 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 问题分析 输入:一个任意的单词和一个内含多个乱序单词的字典文件 输出:该单词在字典中的所有同位词 约束:无解决思路 一一比对输入单词和字典中各个单词的标识符,如果相同则输出字典中的单词。标识符为一个内含26个整型元素数组,数组中的各个元素表示其对应的字母在其对应单词中出现的次数。比如 aabc 的标识符就是{ 2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }。代码实现 1 #include 2 #include 3 #include 4 5 using namespace std; 6 7 #define MAX 26... 阅读全文
posted @ 2014-03-27 15:09 空山悟 阅读(152) 评论(0) 推荐(0) 编辑

2014年3月26日

摘要: 问题解答 前苏联用铅笔解决了这个问题。 作者是想通过本题告诉读者,处理问题要灵活分析各种不同思路后作出决定,虽说条条道路通罗马,但是有的路很近并且好走,有的路很崎岖偏偏还很长。我们要认真分析各种“ 道路 ”以作出最佳决策。 阅读全文
posted @ 2014-03-26 23:28 空山悟 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 问题解答 随着如今网络的快速发展,我们可以建立两点之间专门的网络连接,或者直接订购宽带服务进行数据传递。传输成本几乎可以忽略不计。 阅读全文
posted @ 2014-03-26 23:27 空山悟 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 问题分析 本题考察的是客户订单数据库中主键的存放,我们需要构想一种索引方法以实现用户订单信息的快速存取。解决思路 可以定义一个 10x10 二维数组Array[10][10],以用户电话号码的最后两位作为索引( 具有很高的随机性 )构建哈希表。比如电话是 132******14的用户A的信息就存放在Array[1][4]里。至于处理冲突的方法可以采用拉链法,即如果又有电话为138******14的用户B的信息送达,可以在A用户信息的末尾设置个指针指向B用户的信息。这样比直接顺序存放所有数据的效率高了很多。 阅读全文
posted @ 2014-03-26 23:26 空山悟 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 问题分析 本题考察的实质是如何在不初始化数组的情况下使用数组。实现的关键是如何判断访问位是已经初始化了还是未初始化的,这里,我们必须可以使用辅助空间来记录下访问信息,在具体访问时进行单独的初始化操作。解决思路 先做以下工作: 1. 定义一个top变量,记录当前已经被访问了( 初始化了 )的元素个数。 PS:重复访问的不算 2. 定义一个名为from的辅助数组,和数据数组各位相应,记录数据数组各位置元素被访问( 初始化 )的次序。 PS:重复访问的不算 3. 定义一个名为to的数组,也和数据数组各位相应,其下标表示元素被访问的次序,值表示访问次序对应的访问下标( 数据数组的 )。PS:... 阅读全文
posted @ 2014-03-26 23:09 空山悟 阅读(410) 评论(0) 推荐(0) 编辑
摘要: 问题分析 本题解法和第 5 题我给出的解法思路上是一样的 --- 可以分几次排序,这里不再具体实践了。 阅读全文
posted @ 2014-03-26 22:31 空山悟 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 问题分析 本题考察的是异常处理。优质的程序必须具备良好的异常处理机制,切不可马虎了事,这将直接决定程序的质量。问题解答 先贴出分析目标代码: 1 #include 2 #include 3 #include 4 5 using namespace std; 6 7 // 每个整数的位数 8 #define BITSPERWORD 32 9 // 每次位移量10 #define SHIFT 511 // 取模掩码12 #define MASK 0x1F13 // 位向量的元素个数14 #define N 1000000015 16 // 模拟数组17 int a[1 + N/BIT... 阅读全文
posted @ 2014-03-26 22:25 空山悟 阅读(164) 评论(0) 推荐(0) 编辑
上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 22 下一页

导航