随笔分类 - 算法系列
摘要:网络搜索引擎的答案:问题在一天的24小时之中,时钟的时针、分针和秒针完全重合在一起的时候有几次?都分别是什么时间?你怎样算出来的?分析初看此问题觉得很简单,但是网上各种版本的答案都各不相同,那到底谁是对的呢?我们可以这样考虑——龟兔赛跑,跑得慢的针终归会被快的一圈一圈超过。那么,分别求出时针分针、分针秒针的重合时间,然后再看是否有相同。这里都不难,关键是有一个陷阱!请问大家,我说“一圈一圈超过”,是不是每圈都被超过?先求角速度:(度/秒)1. 时针:w1 = 360 / 12*3600 = 1/120 d/s2. 分针:w2= 360 / 3600 = 0.1 d/s3. 秒针:w3 = 36
阅读全文
摘要:先举一个之前看过的例子:(引自http://gaofen100.iteye.com/blog/1294993)给一个方法,比如 rand5(), 它能够等概率生成 1-5 之间的整数。 所谓等概率就是1,2,3,4,5 生产的概率均为 0.2 。现在利用rand5(), 构造一个能够等概率生成 1- 7 的方法?思路:很多人的第一反应是return rand5()+rand5()%3; 这个实现确实能产生1-7之间的随机数,但是问题在于分布是不均匀的。rand5()%3产生0的概率是1/5,而产生1和2的概率都是2/5。所以这个实现产生6和7的概率要大于产生5的概率。 这里有两个特别重要的..
阅读全文
摘要:桌上有十个苹果,要把这十个苹果放到九个抽屉里,无论怎样放,我们会发现至少会有一个抽屉里面放两个苹果。这一现象就是我们所说的“抽屉原理”。 抽屉原理的一般含义为:“如果每个抽屉代表一个集合,每一个苹果就可以代表一个元素,假如有n+1或多于n+1个元素放到n个集合中去,其中必定至少有一个集合里有两个元素
阅读全文
摘要:step1:节点的描述C语言中用带指针的结构体类型来描述:typedef struct Lnode{ ElemType data; /*数据域,保存结点的值 */struct Lnode *next; /*指针域*/}LNode; /*结点的类型 */step2:节点的实现动态分配 p=(LNode*)malloc(sizeof(LNode));函数malloc分配了一个类型为LNode的结点变量的空间,并将其首地址放入指针变量p中。动态释放 free(p) ;系统回收由指针变量p所指向的内存区。P必须是最近一次调用malloc函数时的返回值。step3:基本操作⑴ 结点的赋值LNode *p
阅读全文
摘要:写出下列程序在X86上的运行结果。struct mybitfields{unsigned short a : 4;unsigned short b : 5;unsigned short c : 7;}test;void main(void){int i;test.a=2;test.b=3;test.c=0;i=*((short *)&test);printf("%d ",i);}在表示一个多字节对象的字节顺序的时候,通常有两个规则:小端法:在存储器中,按照从最低有效字节到最高有效字节的顺序存储对象,即最低有效位在最前端;大端法:在存储器中,按照从最高有效字节到最低有
阅读全文
摘要:【1】根据2^10=1024,所以10个老鼠可以确定1000个瓶子具体哪个瓶子有毒。具体实现跟3个老鼠确定8个瓶子原理一样。000=0001=1010=2011=3100=4101=5110=6111=7一位表示一个老鼠,0-7表示8个瓶子。也就是分别将1、3、5、7号瓶子的药混起来给老鼠1吃,2、3、6、7号瓶子的药混起来给老鼠2吃,4、5、6、7号瓶子的药混起来给老鼠3吃,哪个老鼠死了,相应的位标为1。如老鼠1死了、老鼠2没死、老鼠3死了,那么就是101=5号瓶子有毒。同样道理10个老鼠可以确定1000个瓶子【2】2的10次方=1024,现在先将老鼠排成一列,做一个数列,1表示老鼠是活的,
阅读全文
摘要:Question:一个天平,12个球,只能称三次,要找出12个球中一个重量不同的球,注意这个球并不一定比别的球重,也不一定轻几个原文链接:1,庸才不敢博 2,世界上最酷的词汇不是优雅、品味,而是设计;世界上最好的优点是坚韧Answer1:关键思路:天平有三种状态:平衡、左倾、右倾。也就是以每个球为信息分解粒度,一次称重可以判断三个球,那么12个球至少要3次(3*3*3>12)。那么具体操作时应该怎样分呢?第一次分3组,这样正好一次确定在哪一组出问题(如果天平平衡)或者哪一组是正常的(如果天平倾斜);第二次有两种处理方式,但目的都是确定哪三个出问题,偏重还是偏轻(这点很重要):1,如果确定
阅读全文
浙公网安备 33010602011771号