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

2014年4月2日

摘要: 第一步:搭建基本的编译环境 安装gcc, g++, bulid-essential等编译软件第二步:下载本书示例源码包 可在这里下载 www.apuenook.com第三步:解压下载到的包并放在用户主目录中第四步:进入包内,打开名为Make.defines.linux的文件( 本人linux系统 ),将其中的WDKIR变量设为源码包的路径。第五步:将源码包中 ipp/ipp.h 文件第122行的status变量更名为Status变量第六步:将源码包中 ipp/printd.c 文件第977行的hp->status改为hp->Status第七步:在源码包 include/apue.h 阅读全文
posted @ 2014-04-02 22:19 空山悟 阅读(373) 评论(0) 推荐(0) 编辑
摘要: 前言 在网络套接字编程中,我们可以通过设置套接字选项让网络协议按照我们预想的方式工作。本文教你如何获取当前的套接字选项,以及如何设置套接字选项。涉及函数 以下两个函数包含在头文件 sys/socket.h 中 1. int getsockopt ( int sockfd, int level,... 阅读全文
posted @ 2014-04-02 16:11 空山悟 阅读(508) 评论(0) 推荐(0) 编辑
摘要: 问题分析 输入:磁带中的 4000 x 4000 矩阵 输出:转置后的矩阵 约束:无解答思路 常见的思路是遍历上/下三角矩阵,交换 a[i][j] 和 a[j][i] 进行转置。但由于 a[i][j] 和 a[j][i] 在磁带中不是存放在一起的,因此交换这两个元素会很容易引发磁盘IO中断。 因此,对于处理磁盘中的数据,最好是连续的进行处理。( 事实上对内存中的数据也是如此 这样可以充分利用内存预读技术 ) 故可采用以下思路对磁盘中的矩阵进行转置: 1. 给矩阵文件中的每个元素附加上其行号和列号 2. 对矩阵以行为关键字进行排序 形成矩阵 3. 对矩阵以列为关键字... 阅读全文
posted @ 2014-04-02 15:54 空山悟 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 问题分析 输入:名字的数字标识 输出:通讯录中所有和该标识匹配的记录 约束:错误匹配的概率不能太高解答思路 1. 给通讯录中的记录附加上标识字段( 数字 ) 2. 将通讯录中的记录按照标识字段进行排序 3. 用户输入要查找的人的名字的标识字段( 这里的标识字段类型要经过整理才能转换为 1 中的标识字段类型 详见下面代码的相关部分注释 ) 4. 顺序输出所有和 3 中标识字段匹配的记录代码实现 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 8 // 初始化通讯... 阅读全文
posted @ 2014-04-02 15:37 空山悟 阅读(190) 评论(0) 推荐(0) 编辑

2014年4月1日

摘要: 问题分析 两种情况很相似,故可以重用之前数组旋转所使用的代码。解答思路 1. 将 abc 旋转 a 个单位,得到 bca 。 2. 将 bca 的 bc 部分旋转 b 个部分,得到 cba。小结 这对交换非相邻内存块的问题进行了建模。 阅读全文
posted @ 2014-04-01 21:36 空山悟 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 问题分析 本题考察的是分析算法性能的能力。解答思路 初步思路: 杂技算法应当( 下面的报表将说明不是 )是时间效率最高的算法,一个元素只读取并移动了一次。 翻转算法每个元素读取并移动了两次。故时间消耗是前者的两倍。 平移算法的时间复杂度应当(下面的报表将说明不是 )和杂技算法相同。但空间消耗最大。运行测试 分析 由于平移算法使用了硬件/操作系统提供的缓冲机制,其效率反而是所有算法中最高的。小结 1. 分析一个算法的效率时,能否更大程度利用系统的性能,是要考虑的一个重要因素。 2. 要想真正准确地获取到一个算法的性能信息,还得通过具体执行获取效率信息从而生成最终报表。 阅读全文
posted @ 2014-04-01 21:28 空山悟 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 问题分析 输入:目标数组,旋转位数。 处理:将目标数组旋转指定的位数。 约束:无解答思路 将对象数组拆分成 a b 两个部分:a 表示要移动到尾端的部分 b表示要移动到前端的部分。 根据翻转算法的思想,可以按如下步骤完成旋转操作: 1. 将 a 部分逆置 2. 将 b 部分逆置 3. 将整个数组逆置代码实现#include using namespace std;// 数组旋转函数void rotate(int *array, int n, int r);// 逆置函数void reverse(int *array, int n);int main(void){ // 建... 阅读全文
posted @ 2014-04-01 21:08 空山悟 阅读(717) 评论(0) 推荐(0) 编辑
摘要: 问题分析 输入:目标数组,旋转位数。 处理:将目标数组旋转指定的位数。 约束:无解答思路 见P13页底部,一种类似杂技演员表演的移动元素的技巧。 PS:控制每次" 杂技 "的结束是实现这个算法的关键所在,也是回答本题的第二问,请参考下面代码的注释部分。代码实现 1 #include 2 3 using namespace std; 4 5 // 数组旋转函数 6 void rotate(int *array, int n, int r); 7 // 最大公约数函数 8 int gcd( int a, int b); 9 10 int main(void)11 {12 /.. 阅读全文
posted @ 2014-04-01 17:33 空山悟 阅读(278) 评论(0) 推荐(0) 编辑

2014年3月27日

摘要: 问题分析 输入:目标数组,旋转位数。 处理:将目标数组旋转指定的位数。 约束:无解答思路 建立一个旋转 1 位的函数,这样,要旋转多少位就连续调用这个函数多少次即可。代码实现 1 #include 2 3 using namespace std; 4 5 // 数组旋转函数 6 void rotate(int *array, int n, int r); 7 void rotate_1(int *array, int n); 8 9 int main(void)10 {11 // 建立并初始化,输出测试数组。12 int array[10];13 int... 阅读全文
posted @ 2014-03-27 22:17 空山悟 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 问题分析 输入:目标数组,旋转位数。 处理:将目标数组旋转指定的位数。 约束:无解答思路 设数组长度 n,旋转位数 r。 首先将数组前 r 个元素暂存,然后将数组后面的 n-r 个元素移动到前端,最后将暂存的这 r 个元素填充到数组尾部。代码实现 1 #include 2 3 using namespace std; 4 5 // 数组旋转函数 6 void rotate(int *array, int n, int r); 7 8 int main(void) 9 {10 // 建立并初始化,输出测试数组。11 int array[10];12 in... 阅读全文
posted @ 2014-03-27 17:18 空山悟 阅读(324) 评论(0) 推荐(0) 编辑
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 22 下一页

导航