2015年3月12日

无符号整数翻转函数实现reverse_bits(unsigned int value)

摘要: 题目:Reverse BitsReverse bits of a given 32 bits unsigned integer.For example, given input 43261596 (represented in binary as 00000010100101000001111010... 阅读全文

posted @ 2015-03-12 13:04 Wang_Ke 阅读(1337) 评论(0) 推荐(0) 编辑

2013年10月5日

一个 fork 的面试题

摘要: 题目:请问下面的程序一共输出多少个“-”?#include #include #include int main(void){ int i; for(i=0; i0,则是父进程(返回值是子进程的pid),这是众为周知的。还有一个很重要的东西是,在fork()的调用处,整个父进程空间会原模原样地复制到子进程中,包括指令,变量值,程序调用栈,环境变量,缓冲区,等等。所以,上面的那个程序为什么会输入8个“-”,这是因为printf(“-”);语句,我们知道,Unix下的设备有“块设备”和“字符设备”的概念,所谓块设备,就是以一块一块的数据存取的设备,字符设备是一次存取一个字符的设备。磁盘、... 阅读全文

posted @ 2013-10-05 16:22 Wang_Ke 阅读(249) 评论(0) 推荐(0) 编辑

2013年9月19日

数组指针和指针数组的区别

摘要: 数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。p=a; //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0]p++; //该语句执行过后,也就是p=p+1;p跨过行a[0][]指向了行a[1][]所以数组指针也称指向一维数组的指针,亦称行指针。指针数组定义 int *p[n] 阅读全文

posted @ 2013-09-19 14:19 Wang_Ke 阅读(238) 评论(0) 推荐(0) 编辑

2013年9月12日

结构体struct && 联合union

摘要: 1.C语言中的结构体1.1 定义结构体是由一系列相同或不同类型的变量组成的集合。struct 结构体名{ //struct为关键字,“结构体名”为用户定义的类型标识。数据类型1 成员名1; //{ }中是组成该结构体的成员,其中数据类型可以是C语言所允许的任何数据类型。数据类型2 成员名2;...数据类型n 成员名n;};1.2 结构体的内存分配(方法一)结构体在内存中分配一块连续的内存,但结构体内的变量并不一定是连续存放的,这涉及到内存对齐。原则1 数据成员对齐规则:结构(struct或联合union)的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该 阅读全文

posted @ 2013-09-12 14:21 Wang_Ke 阅读(467) 评论(0) 推荐(0) 编辑

2013年9月5日

有一个整数数组,请求出两两之差绝对值最小的值,记住,只要得出最小值即可,不需要求出是哪两个数。 (微软面试题)

摘要: 问题同上:有一个整数数组,请求出两两之差绝对值最小的值,记住,只要得出最小值即可,不需要求出是哪两个数。方法《1》:暴力的方式。遍历所有的两个数的差,记录最小值。算法的复杂度O(n2)方法《2》:两个数要想差的绝对值最小,肯定是需要两个数大小相近。故有思路:先对数组进行排序,然后遍历一遍,相邻的数相减,记录绝对值最小的数。方法《3》:将现在的问题进行转化:设这个整数数组是a1,a2,...,an构造数组B=(b1,b2,...,bn-1)b1 = a1-a2,b2 = a2-a3,b3 = a3-a4,...bn-1 = an-1 - an那么原数组中,任意两整数之差ai-aj(1<=i 阅读全文

posted @ 2013-09-05 19:46 Wang_Ke 阅读(4477) 评论(0) 推荐(0) 编辑

和为n连续正数序列

摘要: 题目:输入一个正数n,输出所有和为n连续正数序列。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。对于这个题目可以采用两个变量表示下标然后移动的方法,一个表示序列的开头,一个表示序列的结尾。当开头大于n的一半时终止移动。代码如下://和为n连续正数序列 #include using namespace std; void print_sq(int start,int end){ //打印序列 for(int i=start;inum) sum-=start++; else{ ... 阅读全文

posted @ 2013-09-05 03:22 Wang_Ke 阅读(297) 评论(0) 推荐(0) 编辑

2013年8月31日

桶排序(Bucket Sort)

摘要: 桶排序是另外一种以O(n)或者接近O(n)的复杂度排序的算法. 它假设输入的待排序元素是等可能的落在等间隔的值区间内.一个长度为N的数组使用桶排序, 需要长度为N的辅助数组. 等间隔的区间称为桶, 每个桶内落在该区间的元素. 桶排序是基数排序的一种归纳结果算法的主要思想: 待排序数组A[1...n]内的元素是随机分布在[0,1)区间内的的浮点数.辅助排序数组B[0....n-1]的每一个元素都连接一个链表.将A内每个元素乘以N(数组规模)取底,并以此为索引插入(插入排序)数组B的对应位置的连表中. 最后将所有的链表依次连接起来就是排序结果.这个过程可以简单的分步如下:设置一个定量的数组当作空桶 阅读全文

posted @ 2013-08-31 18:38 Wang_Ke 阅读(270) 评论(0) 推荐(0) 编辑

2013年8月20日

《算法导论》第15章 动态规划总结

摘要: 1、基本概念 动态规划是通过组合子问题的解而解决整个问题的,通过将问题分解为相互不独立(各个子问题包含有公共的子问题,也叫重叠子问题)的子问题,对每个子问题求解一次,将其结果保存到一张辅助表中,避免每次遇到各个子问题时重新计算。动态规划通常用于解决最优化问题,其设计步骤如下:(1)描述最优解的结构。(2)递归定义最优解的值。(3)按自底向上的方式计算最优解的值。(4)由计算出的结果构造出一个最优解。 第一步是选择问题的在什么时候会出现最优解,通过分析子问题的最优解而达到整个问题的最优解。在第二步,根据第一步得到的最优解描述,将整个问题分成小问题,直到问题不可再分为止,层层选择最优,构成整个.. 阅读全文

posted @ 2013-08-20 15:42 Wang_Ke 阅读(319) 评论(0) 推荐(0) 编辑

2013年6月25日

随机数范围扩展方法总结

摘要: 题目:已知有个rand7()的函数,返回1到7随机自然数,让利用这个rand7()构造rand10() 随机1~10。分析:要保证rand10()在整数1-10的均匀分布,可以构造一个1-10*n的均匀分布的随机整数区间(n为任何正整数)。假设x是这个1-10*n区间上的一个随机整数,那么x%10+1就是均匀分布在1-10区间上的整数。由于(rand7()-1)*7+rand7()可以构造出均匀分布在1-49的随机数(原因见下面的说明),可以将41~49这样的随机数剔除掉,得到的数1-40仍然是均匀分布在1-40的,这是因为每个数都可以看成一个独立事件。下面说明为什么(rand7()-1)*7 阅读全文

posted @ 2013-06-25 18:33 Wang_Ke 阅读(748) 评论(0) 推荐(0) 编辑

关于我

摘要: 大家好!我是Wangke,欢迎来到我的blog。这是本人的第一个blog,之前喜欢看别人写的博客,觉得学习的地方很多,由于本人的写作手笔和表达能力欠佳,一直以来都没能拥有自己的blog空间,作为一个程序员是件挺失败的事情。关于本人本人现在在武汉的一所大学读研二,计算机科学与技术专业,从事的方向是人工智能,热爱数据结构与算法,C++是唯一一个算得上学的还不错的计算机语言。悉心像大牛学习,爱编程,爱看书,爱旅行,也爱游戏。Email: wangke59@hotmail.com写在最后如果你喜欢我喜欢的,你关注我关注的,那么希望我们能够做个朋友。 阅读全文

posted @ 2013-06-25 16:17 Wang_Ke 阅读(163) 评论(0) 推荐(0) 编辑

导航