
编程之美
文章平均质量分 62
nevasun
Its no y in "happiness", its an i.
展开
-
POJ 1001 解题报告
这道题主要是考察数的高精度乘法,使用数组存储数据,数组中的元素对于高精度数据中的某一位。我用的思想很简单,类似我们手算乘法时采用的步骤,这是在两层的for()循环中实现的。需要注意一个问题,如果采用unsigned char型存储元素,在运算的过程中Rslt[]元素的中间结果可能超过255,造成乘法结果的中间部分数据不正确。因此,Rslt[]进行累加时,需要及时进位。在我的程序中,对数据有效位前后原创 2011-09-03 14:37:07 · 1003 阅读 · 0 评论 -
面试题:用一个临时变量实现单链表逆序
通常实现某种算法有两种常用的思想:循环和递归,这两种方式都需要占用一定的空间,但是循环使用的是某一个栈帧的空间,而递归则会使运行时函数调用不断压栈导致栈帧数量的增加。我在之前的动态规划算法学习中提到的爬楼梯问题所采用的两种方式可以很好地解释这两种思想。在《编程之美》3.4扩展问题实现中,使用循环的思想实现了链表的逆序,这种方式需要使用三个临时变量。那如何只使用一个临时变量实现单链表逆置呢?我们原创 2012-06-29 12:49:00 · 3975 阅读 · 1 评论 -
某应用软件公司的面试题
昨天去一个公司面试,出的题比较典型,也很基础,拿出来和大家分享。1. 请描述const和#define相比,有何优点?答:#define定义的其实是一个常数的名字,就是说你可以把这个名字等价于常数使用,在编译时会被编译器替换为该常数。之所以这么做,仅仅是为了提高可读性,但是安全性不能得到保证。出于安全性的考虑,C++引入了const定义。当然这仅仅是const的功能之一。使用const,你原创 2012-05-24 18:37:55 · 1781 阅读 · 0 评论 -
使用比特位图解决八皇后问题
八皇后问题,是一个古老而著名的问题,是回溯算法的典型例题。该问题是十九世纪著名的数学家高斯1850年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。计算机发明后,有多种方法可以解决此问题。(百度百科)原创 2012-05-03 10:49:19 · 2595 阅读 · 0 评论 -
腾讯笔试题
发信人: afthr (afthr), 信区: ParttimeJob 标 题: 腾讯笔试题 发信站: 北邮人论坛 (Wed Apr 11 17:39:03 2012), 站内 1. 写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分) int a = 4; (A)a += (a++); (B) a += (++a) ;(C) (原创 2012-04-11 17:56:43 · 2235 阅读 · 8 评论 -
《编程之美》3.4扩展问题实现
《编程之美》3.4从无头单链表中删除节点假设有一个没有头指针的单链表,一个指针指向此单链表中间的一个节点(不是第一个,也不是最后一个节点),请将该节点从单链表中删除。作者巧妙地把删除无头单链表节点的问题做了转换,把要删除的节点的下一个节点中的数据部分传递给此节点,然后再删除下一个节点。可见,在不影响效率和复杂度的前提下,我们完全可以不受题目要求的局限,另辟蹊径。扩展问题是面试的常见问题原创 2012-03-05 13:39:50 · 2212 阅读 · 0 评论 -
《编程之美》之2.14求子数组之和的最大值
一个有N个整数元素的一维数组,这个数组存在很多子数组(子数组取自原数组部分连续的元素),那么子数组之和的最大值是什么呢?书中解法一采用最简单直白的解法,解法二采用分治算法,解法三根据分治算法和动态规划做出了优化,不再赘述。虽然我给出的解法实现和解法三比较类似,但是感觉思路更加清楚容易理解,这里简单陈述一下我的思想。题目要求给出数组中子数组和的最大值,这里以数组{a, b, c, d, e,原创 2012-02-24 14:29:51 · 1579 阅读 · 0 评论 -
《编程之美》最大公约数问题之循环解法
编程不仅是实现特定的要求,也应该考虑实现的细节。2.7最大公约数问题提供了三种解法,从执行效率上逐步执行优化。但是书中提供的函数都是采用递归调用方式,如此简单的函数功能采用递归调用未免会产生大量的压栈操作,极大影响程序的效率。下面是我实现的非递归方式:int gcd(int x, int y){ int factor = 1; while(x != 0 && y != 0) { i原创 2012-02-22 15:15:33 · 1369 阅读 · 0 评论 -
《编程之美》找符合条件的整数之C语言实现
《编程之美》2.8 找符合条件的整数。任意给定一个正整数N,求一个最小的正整数M(M>1),使得N*M的十进制表示形式里只含有1和0。作者经过对问题的分析,把计算两个数相乘结果转变成了对余数信息的处理。通过算法思想的转换简化了问题的处理过程,并在处理余数的过程中,把中间过程的余数信息保存下来,这也避免了大量的浪费效率的模运算。同时,由于所要求的结果可能很大,我们采用bit位图的方式,用在相原创 2012-02-23 11:42:33 · 1573 阅读 · 0 评论 -
24点游戏
《编程之美》1.16是对24点游戏实现的分析。24点游戏是一款非常大众化的智力游戏,规则很简单,给出4个在1~13间的数字,通过加减乘除四则运算使四个数字的运算结果为24。现在需要编程实现求解24点游戏的表达式。 最初没有看书中所给出的实现代码,想到的最简单最直接的方法就是穷举。这里,我们需要事先考虑到这个游戏的一些约束条件,由于加减乘除均为二元运算,每次选出两个数字进行计算,计原创 2011-12-18 15:08:58 · 1725 阅读 · 0 评论 -
一摞烙饼的排序
1.2《中国象棋将帅问题》解法一和最后一个代码使用位段的方法,有一些投机取巧的成分。因为题目要求是使用1个变量,而不是一个字节,使用位段和定义结构体从思想上并没有什么分别。显然根据使用1个变量的要求,倒数第二段代码是最符合题意的,其实是利用了9进制的思想,将一个两位的九进制变量每一位分别处理,值得借鉴和学习。1.3《一摞烙饼的排序》刚开始提供了动态规划的思路,但是DP却不能提供最优的解法,假设原创 2011-11-18 14:23:44 · 1230 阅读 · 0 评论 -
一道面试题——四人喝酒的问题
有a,b,c,d四个人,现在有X,Y,Z三个不规则酒杯,X,Y容量为8两,现在已装满酒,Z容量为3两,为空杯.现在要求四个人每人都能平均喝到4两酒,请说出该怎么喝?写出算法,并打印出每步X,Y,Z杯内的酒多少和四个人每人所喝的酒?这道题的来源不可考。在网上搜《编程之美》烙饼问题的相关资料的时候看到了这道题,之前没接触过算法,手算想了一会儿居然没有算出来~想了大概一天的时间,终于把代码搞定了。原创 2011-11-21 10:41:32 · 3112 阅读 · 2 评论 -
编程之美——CPU占用率曲线
前几天终于买了本《编程之美》,从第一题开始做,争取在找工作之前尽快看完。其实这本书看起来很难,但是弄明白思考的方式,问题就变得很简单了。第一题是CPU占用率曲线的问题,这个题在之前已经写过了,可以参考Windows控制CPU使用率曲线,这篇文章也写了linux下的实现,大家可以参考。说一下对《编程之美》 1.1的一点注释吧。1. 如果我们写一个死循环,while(1); ,对于双核的操原创 2011-11-18 10:53:04 · 1855 阅读 · 0 评论 -
动态规划算法学习
笔试面试中经常会出现一些考察动态规划方面的题目,以前没有接触过,现在初学做个整理。1. 什么是动态规划? 和分治法一样,动态规划(dynamicprogramming)是通过组合子问题而解决整个问题的解。 分治法是将问题划分成一些独立的子问题,递归地求解各子问题,然后合并子问题的解。 动态规划适用于子问题不是独立的情况,也就是各子问题原创 2011-11-16 16:24:41 · 22801 阅读 · 4 评论 -
POJ 1002 解题报告
在无序的电话号码中找到重复的并按顺序输出,比较懒,没想到什么好方法。首先把输入的电话号码都存起来转化成标准格式,然后进行快排qsort,最后比较有序的电话号码,如果有重复就输出。这里要注意比较的过程中,如果最后的几个电话相同,可能就不会输出(跳出了for循环),因此需要检查在for循环退出时cnt是否为一。代码如下:#include #include #include char dic原创 2011-09-03 14:50:46 · 578 阅读 · 0 评论 -
微软2012暑期实习笔试题(附答案)
1. Suppose that a Selection Sort of 80 items has completed 32 iterations of the main loop. How many items are now guaranteed to be in their final spot (never to be moved again)?对80个数进行选择排序,执行32个循环后,原创 2012-07-26 14:52:03 · 3965 阅读 · 0 评论