- 博客(15)
- 收藏
- 关注
原创 2.7 最大公约数
<br />编程之美 : 2.7最大公约数<br /> <br />这是个老问题了,很简单,是个人都会,辗转相除法<br />用f(m , n) 表示两个数m和n的最大公约数,并且m>n那么有:<br />f(m , n) = f(n , m%n)<br />好的,不难看书,递归解决问题<br /> <br />我们有下面的代码<br />int gcd_one(int m , int n)<br />{<br /> if( n ==0 )<br /> {<br /> return m ; <br />
2010-11-22 18:25:00
318
原创 2.3
<br />编程之美 2.3<br />问题描述:有一个数组,里面是用户的ID,我们知道,有一个ID出现的次数超过了一半,找出这个ID<br /> <br />分析:<br />排序整个数组,然后再遍历一次,找出出现次数超过一半的ID<br />我们再想一下,如果这个数组已经排序了,那么在[N/2]那个位置的肯定是我们要找的ID。<br />上面说的,都是要排序整个数组,那么,可不可以不排序整个数组呢?书上说了一个方法:我们每次都从数组中干掉两个不同的ID,,那么,在剩下的的数组中,那个“水王”还是占据半壁
2010-11-22 14:25:00
310
原创 effective C++ 条款32 to 条款40
<br />这一章是面向对象的概念<br /> <br />条款32:确定你的public继承塑模出is-a关系<br />其实这个条款正如大师一开始举得例子一样:public inheritance 意味 is-a的关系<br /> <br />条款33:名称的遮掩<br />局部变量名汇遮掩全局作用域的变量名<br /> <br />看下面一个例子:<br />class Base{<br />private :<br /> int x ; <br />public :<br /> vir
2010-11-22 11:03:00
428
原创 2.2 有关阶乘
<br />编程之美 2.2 不要被阶乘吓到<br />题目要求:给你一个N,求他的阶乘的末尾有多少个0 , 求它二进制表示中最低位1的位置<br /> <br />题目1思路:肯定不可能求N的阶乘,不然乘死了,怎么样会有0?10的倍数,还有5和2的积,显然,10可以化成2*5 ,那么我们只要对N的阶乘的记过进行质因数分解,看有多少个pair<2,5>就行了,显然,2的个数比5多的多,所有,实际上就是,N的阶乘里面有多少个5,那么末尾就有多少个0.<br /> <br />题目2思路:我们想想,把一个数化成
2010-11-21 21:52:00
1824
原创 2.1 求二进制数中1的个数
<br />编程之美:2.1<br />题目要求:求一个数的二进制表示中1的个数<br /> <br />解法1:<br />我们比较想想,我们怎么把一个数字化成二进制呢?短除法,对,每次除2,余数是1就写1,是0就写0,然后反过来,就OK了,那么解法1就出来了,每次除2,看余数,有下面的代码:<br />int count_solution_1(unsigned int n)<br />{<br /> int num = 0 ;<br /> while(n)<br /> {<br /> if(n%2 =
2010-11-21 20:51:00
605
原创 effective C++ 条款26 to 条款31
<br />这个几个条款都在讲实现中的细节问题<br /> <br />条款26:尽可能延后变量定义式的出现时间<br />核心思想:变量一旦定义了,就要有用。<br />书上讲了三个例子,一个说,一旦异常被抛出,前面定义的变量就没有使用,第二个是说,不要先用默认构造函数定义一个变量,然后再赋值,而是一开始就直接调用cop构造函数给予初值。第三个是是不是应该在循环中定义变量,还是将变量定义在循环为,然后循环中用赋值。(第3点有点小夸张,呵呵)<br /> <br />总结出:不知应该延后变量的定义,直到非得
2010-11-20 20:39:00
589
原创 effective C++ 条款25 swap
<br />item 25:一个不抛异常的swap函数<br /> <br />标准库有一个swap用于交换两个对象值<br />namespace std{<br /> template<typename T><br /> void swap(T& a , T& b)<br /> {<br /> T temp(a) ; <br /> a = b ;<br /> b = temp ; <br /> }<br />}<br />所以,只要对象的
2010-11-19 16:25:00
1154
原创 effective C++ 条款18 to 条款24
<br />这个部分主要解决设计的问题,具体就是,如何让你的设计更加健壮,如何让代码更好得体现封装等面向对象的思想<br /> <br />条款18:<br />书中举了一个Date的类,引开了用户如何回去误用一个类,我们应该如何有效的避免这个类被误用(在编译的时候就出错)。具体说来,有以下几种方法:<br />1、引入一些别的类,例如书中的Day , Month , Year<br />2、多用const<br />3、以函数替代某个对象,表示某个月份<br />4、消除客户管理资源的责任,用上面的资源管
2010-11-19 13:15:00
461
原创 effective C++ 条款05 to 条款12
<br />这个部分的概念貌似简单,实则极为核心,是最基础的东西。因为构造函数,析构函数,拷贝构造函数,拷贝赋值函数很多时候都是默默调用的,比如,返回对象,堆上新建数组,等等,我们必须保证这几个基本的函数能够正常工作,才谈的上让类发挥作用,否则,只会陷入无尽的沉思<br /> <br />条款05:<br />显然,C++默认会有以下一些函数(都是public 和 inline的):<br />1、默认构造函数:所有的非内置类型成员不初始化,所有类类型成员用其默认构造函数初始化<br />2、析构函数:默认
2010-11-17 22:37:00
407
原创 爬Google的查询页
最近没有没有Google API key了,因此只能自己将查询对应的URL准备好,然后通过脚本将该链接对应的网页爬下来。我们假定,我们要爬这样一个页面:http://www.google.com/search?q=IBM我们可以直接在浏览器输入上面的URL,可以看到,是Google对应IBM这个查询的返回页。我们现在的目的是通过python程序把这个返回页download下来,存在本地,为
2010-04-07 19:41:00
928
原创 'Programming Collective Intelligence'读书笔记
把原来MSN space上的读书笔记搬过来,HOHO最近两个星期,趁着实习的空挡,我看了一本非常优秀的书:Programming Collective Intelligence,之所以说这本书优秀,是因为他将很多理论通过程序展现给了读者,使得读者可以真切的感受到如何将理论应用到真正的实际应用中,并且所有的代码都是完整的,读者可以自己动手练习,在最后的algorithm summary中对本
2010-04-05 13:56:00
552
原创 windows 下的静态、动态库
偶们在实际的编程开发中,经常会遇到运行时无法找到某个DLL文件或者链接时无法找到某个LIB文件。然后,我们就开始乱GOOGLE一下,然后将VS2005的设置改变一下,或许就Ok了,我们将别人开发的DLL或者LIB导入到我们的编程中,那么这些lib,DLL到底是什么呢?下面,偶就细细道来。 首先,偶们说第一个:静态链接库(Static Libary)偶们用VS2005做一个静态链接库先
2010-04-05 01:36:00
1998
5
原创 用SVN+cruisecontrol 搭建持续集成开发环境
最近因为项目的需要,需要搭建持续集成开发环境。简单的说,持续集成就是要干这么一件事:持续集成与SVN配合,开发人员将代码上传到SVN上指定的文件夹下,持续集成cruisecontrol(简称CC)会自动从SVN上checkout代码,自动进行编译链接,生成可执行文件,而PM(也就是实验室管我们的老师)则通过web前端登录到CC服务器,从而查看每个‘码农’的每天代码的更改情况。可以说,CC为一个软件
2010-04-01 19:04:00
3169
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人