10 2013 档案
摘要:原始版本的大数相乘地址:http://www.cnblogs.com/life91/p/3389890.html 在原来的版本中,整数相乘与小数相乘是分开的。其中,在计算小数时,需要将数值与小数点进行分割。在本次版本中,整数和小数在一次计算中进行处理。本版本中对原始版本中的几个BUG进行处理: 1.小数末尾出现的无效0。例如,”0.123400”->“0.1234” 2.对于两个均是小于0的小数相乘,需要在结果中的整数部分存放’0’。例如,0.12*0.4=0.048 参考小数相乘模型: 2.5 × 1.2 --------------------数值上标数值表示进位值...
阅读全文
摘要:上一篇的blog地址为:http://www.cnblogs.com/life91/p/3313868.html 这几天又参加了一个家公司的笔试题,在最后的编程题中竟然出现了去哪儿网开发的第一题,也就是简化路径值。但是这次做题后,我发现我上次写的那个简化源码有很多问题,并且在这次笔试过程中也没有答对。闲话说完了,进入正题。 上次源码出现的BUG: 1.将连续重复的多个’/’字符视为一个。例如,”/abac/def//////ef”->”/abac/def/ef”。 2.根目录的开始字符为’/’,并且根目录的上级目录以及上上级目录都是本身。例如,”/../../../”->”/”。
阅读全文
摘要:上一篇有关堆排序的源码是从STL标准库中抽出来,但是源码有点让我混乱。最近闲来无事,再写一篇有关堆排序的博客,并附上简单的过程描述。 (参考书籍:《算法引论——一种创造性方法》4.7和6.4.5节) 堆排序最坏情况下的运行时间是O(nlogn)。堆排序中建堆方式有两种: 1.自顶向下建立大根堆。简单点说,就是从无到有插入元素到堆中。这样可以有效地维护了大根堆的性质,即大根堆是由满足大根堆性质的子堆构成。 2.自底向上建立大根堆。一般都是从堆存储数组的一半的位置开始递减比较。需要注意的是,在每次比较后,需要调整子堆来满足大根堆的性质。有点类似于从建好的大根堆中移除元素之后的调整。(这...
阅读全文
摘要:最近笔试出现的一道概率问题:给定一个随机函数rand_m()能按1/m的概率生成数字z(0≤z limits );11 12 return tmp1;13 } 我以前的时候百思不得其解,为什么这么写?而不是这样写: 1 int rand_c( int limits ) 2 { 3 int tmp0 = 0; 4 int tmp1 = 0; 5 int tmp2 = 0; 6 7 do { 8 tmp0 = rand3(); 9 tmp1 = rand3();10 tmp2 = rand3();11 ...
阅读全文
摘要:今天去参加腾讯笔试,其中有一道选答题:大数相乘问题。在编写代码的过程,我突然发现以前写的原始的大数相乘是一个很简陋的源码。所以,下午找个时间重新写了一份。 大数相乘:两个超出整型限制的两个数相乘,例如,两个50位的正数相乘。 最简陋的方式,就是按照乘法的计算过程来模拟计算: 1 2 × 3 6 ---------- ---- 其中,上标数字为进位数值。 712 --- 在这个计算过程中,2×6=12。本位保留2,进位为1.这里是一个简单的计算过程,如果在高位也需要进位的情况下,如何处理? 3 6 ----------- 413 2 开始比较...
阅读全文
摘要:原文章网址:http://baiy.cn/doc/cpp/inside_exception.htmC++异常机制的实现方式和开销分析白杨http://baiy.cn在我几年前开始写《C++编码规范与指导》一文时,就已经规划着要加入这样一篇讨论 C++ 异常机制的文章了。没想到时隔几年以后才有机会把这个尾巴补完 :-)。还是那句开场白:“在恰当的场合使用恰当的特性” 对每个称职的 C++ 程序员来说都是一个基本标准。想要做到这点,就必须要了解语言中每个特性的实现方式及其时空开销。异常处理由于涉及大量底层内容,向来是 C++ 各种高级机制中较难理解和透彻掌握的部分。本文将在尽量少引入底层细节的前提
阅读全文
摘要:题目:如何设计一个每秒百万级访问量的互联网服务器,每个服务器均包含数据计算和I/O操作。 提示:互联网服务器是一个7*24*365*N的运行程序,类似于一种远程计算机结构。用户在服务器端的信息时,实际上就是把服务器端的信息通过网络复制到客户端上,并通过客户端的相关软件展现出来。 考虑因素(参考书籍《深入理解Nginx模块开发与架构解析》): 1. 性能,包括网络性能,单次请求的延迟性,网络效率; 2. 可伸缩性:指架构可以通过添加组件来升级服务,或者允许组件之间具有交互功能。 3. 简单性 4. 可修改性,包括可进化型,可扩展性,可定制性,可配置型,可重用性。 5. 可见性 ...
阅读全文
摘要:最近碰到一个问题,就是从控制台读取一组数,如: 12 23 34 56 若是使用1 int data;2 while ( cin >> data ) {//...} 当回车后,不能有效转换到后面。除非输入非数字字符才能导致循环结束。这是因为cin在读取输入时,忽略空格和回车键等。 使用cin.get()可以从控制台中读取空格键,因此这段代码就可以改变为:1 int data;2 vector room;3 while ( cin >> data )4 { 5 room.push_back( data );6 if ( cin.get() == ...
阅读全文

浙公网安备 33010602011771号