上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 22 下一页

2014年4月10日

摘要: 题目 请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。分析 首先要明白:一个整数和它减去 1 的结果做与运算,相当于把它最右边的 1 变成 0。 这样可以用一个循环程序解决这个问题,每次循环都让整数和它减去 1 的结果做或运算,循环判定该数是否为 0 ,这样,循环的次数即是该数中有 1 变成 0 的次数,也即该数中 1 的个数。代码实现 1 #include 2 3 using namespace std; 4 5 int numberOf1(int n) { 6 int count = 0; 7 8 while (n) { 9 +... 阅读全文
posted @ 2014-04-10 11:58 空山悟 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 题目 写一个函数,输入 n,求斐波那契数列的第 n 项。斐波那契数列的定义如下: 分析 由数列公式可知用递归法是很容易进行求解的,但递归求解的效率会很低,因此需要考虑使用循环求解。 一般来说,能够用递归实现的程序也可以用循环实现,但较之循环法,递归程序虽然设计上更容易,但效率却受到很大影响。代码实现一:递归法 1 #include 2 3 using namespace std; 4 5 int fb(int n) { 6 if (n > n;21 22 int result = fb(n);23 24 cout 2 3 using namespace... 阅读全文
posted @ 2014-04-10 11:27 空山悟 阅读(584) 评论(0) 推荐(0) 编辑

2014年4月9日

摘要: 题目 用两个栈实现队列的进队和出队功能分析 1. 栈直接用C++的容器适配器 stack 实现 2. 当进队时,直接往栈 1 存放数据;当出队时,如果栈 2 非空则直接从栈 2 取数,否则将栈 1 的数据全部出栈并转移至栈 2,然后再从栈 2 取数。 3. 考虑到这里采用的两个栈应当要封装起来,因此,采用类来实现这个队列。代码实现 1 #include 2 #include 3 4 using namespace std; 5 6 // 队列定义 7 class SQueue { 8 public: 9 SQueue (void) {10 }11 ~SQ... 阅读全文
posted @ 2014-04-09 17:20 空山悟 阅读(346) 评论(0) 推荐(0) 编辑
摘要: 问题分析 输入:阶数 k,级数前 k 项 a1 - ak,常系数 c1 - ck+1,要求到的级数项 m 输出:1 - m 项级数 a1 -am 约束:无思路分析 首先要明白 m 肯定是大于 k 的,不然这题不用解答。 然后要理清这里面存在的递归关系,可以假设 k = 3,c1 - c4 为 1-4,那么就有如下的递归式: an = an-1 + 2an-2+ 3an-3 +4 因此,可以使用递归法求出第 k+1 至 第 m 项级数,但要注意的是管理好动态数组以存取求解阶段需要用到的各个数据,这也是本题考察的重点。代码实现 说明:不使用数组的方法会很复杂,暂不实现这种方法。 1... 阅读全文
posted @ 2014-04-09 16:09 空山悟 阅读(685) 评论(0) 推荐(0) 编辑
摘要: 问题分析 输入:用户个人收入 输出:该用户要缴纳的个人所得税 约束:不允许使用过多的 if 语句解答思路 最简单的方法是根据不同的税率区间,创建多个 if 语句来求解。但如此一来便会有 25 个 if 语句段,代码就显得太过冗余。 可以通过将判定条件都存入数组,编写统一性的代码来达到精简程序的目的。代码实现 说明:为了描述简单,只列举了 5 个税率区间的情况。 1 #include 2 3 using namespace std; 4 5 // 定义税率区间数组元素 6 struct tax_u { 7 int income_t; 8 int base; 9 ... 阅读全文
posted @ 2014-04-09 11:31 空山悟 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 解答 爱迪生将灯泡放进一个小的长方体水槽,观察其水位线的增量后,乘以水槽底面积得到结果。小结 研究员直接用微积分去算,有似于蛮力法。虽然可以达到目的,但时间,空间开销往往都挺大。我们应当尽量地避免蛮力法,采用更巧妙的算法。 阅读全文
posted @ 2014-04-09 09:41 空山悟 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 问题分析 顺序搜索的时间复杂度是O( n ),二分搜索的时间复杂度级别是O( lgn )。但这并不代表二分的时间开销就一定比顺序的小,因为二分搜索有个前提:元素必须要是有序的。如果仅仅为了二分搜索几个元素,就将整个数组重新排序,显然是不值得的。解答思路 此题用理论计算非常复杂,应当结合具体问题分析不同搜索次数下程序的时间开销情况,并绘制表格做出决策。小结 程序的效率,往往要结合具体情况( 数据情况,查询次数等等 )来分析。 阅读全文
posted @ 2014-04-09 09:33 空山悟 阅读(216) 评论(0) 推荐(0) 编辑

2014年4月8日

摘要: 前言 在之前,学习了 read write 这样的不带缓冲IO函数。而本文将讲解标准IO库中,带缓冲的IO函数。为什么要有带缓冲IO函数 标准库提供的带缓冲IO函数是为了减少 read 和 write 函数调用次数而设计的。因为每次调用 read 和 write 函数系统都会中断并陷入内核,增加了CPU的负担。三大缓冲类型 1. 全缓冲 在填满标准IO缓冲区后才进行实际IO操作。 2. 行缓冲 在输入和输出过程中遇到换行符时,执行实际IO操作。 3. 不缓冲 任何时候的实际读写都是在函数调用时进行,函数调用后结束。代码实现 具体的应用类似于不带缓冲IO函数,只是文件描述符变成... 阅读全文
posted @ 2014-04-08 22:53 空山悟 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 前言 前文对 Linux 中的权限进行了较为透彻的分析。而本文,则在前文的基础上,具体说明如何在代码中进行权限控制。 下面的代码涉及到以下几个方面: 1. 创建文件时设置文件权限 2. 修改文件的默认权限 3. 修改已创建文件的权限 在阅读具体实现代码前,请先大致了解如下权限宏。Linux 中的权限宏代码实现 1 #include "apue.h" 2 #include 3 4 #define RWRWRW (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH) 5 6 int 7 main(void) 8 { 9 stru... 阅读全文
posted @ 2014-04-08 22:31 空山悟 阅读(403) 评论(0) 推荐(0) 编辑
摘要: 前言 上篇随笔讲述了Linux中权限的大致实现机制以及目录权限的相关规则。本文将讲解Linux中的三种特殊权限:SUID,SGID,Sticky权限。看完这两篇文章,你一定会对Linux的权限有个更深的认识。SUID 当一个文件有了SUID权限,则其他用户使用这个文件的时候,可以临时获取到该文件所有者的权限。 该权限比较经典的一个使用例子是passwd程序:每个用户都可以执行这个程序修改自己的密码,但我们知道密码文件的所有者是root且不允许其他用户接触。那怎么修改密码?有办法!我们给这个文件以SUID权限,这样当用户通过修改密码进程使用这个文件时,可以临时获取root权限,从而修改到自... 阅读全文
posted @ 2014-04-08 21:40 空山悟 阅读(167) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 22 下一页

导航