编程之美
havedream_one
这个作者很懒,什么都没留下…
展开
-
最大公约数求解
《编程之美》 第一种方法(辗转相除法) 利用的原理:gcd(x,y)=gcd(y,x%y) //x>y,若x 程序: int gcd(int x,int y){//传入的参数要满足x>y return (!y)?x:gcd(y.x%y); } 缺点:在大整数时,取模运算会很昂贵 第二种方法(姑且成辗转相减法) 利用的原理:gcd(x,y)=gcd(x-y,y) 如果一个数能够同转载 2014-12-11 10:45:28 · 2310 阅读 · 0 评论 -
将无限循环小数转换成分数形式
节选自《编程之美》 设一个循环小说X=0.a1a2a3...an(b1b2...bm),括号中的是循环节,例0.333(333) 将X分成两部分,X=(a1a2..an+0.(b1b2..bm))/10n 设Y=0.(b1b2...bm) 则有Y=(b1b2...bm+0.(b1b2...bm))*10m 那么就有Y=b1b2...bm/(10m-1) 综上可知 X=(a1a2...转载 2014-12-11 09:05:35 · 5767 阅读 · 0 评论 -
中国象棋将帅问题
来源:编程之美-微软技术面试心得 在中国象棋中,将帅只能在两个九宫格里,且将帅不能见面,即不能同时出现在一列里, 问题:请输出将帅所有可能的位置,只能用一个字节实现 分析:这个问题的难点在于变量只能使用一个字节, 很显然,大致的解法就是两个for循环,然后判断将帅是否在同一列,不在则输出。 设:A=‘将’,B=‘帅’,九宫格用1,2,3,……,9来表示。 解法一: A或B可能转载 2014-11-27 08:48:15 · 1150 阅读 · 0 评论 -
编程之美--求数组中子数组之和的最大值
《编程之美--微软技术面试心得》 思路: 方法一: 最直接的方法,遍历所有的子数组,比较其和 O(N2) 方法2: 分治算法 O(N*logN) 方法3: 动态规划方法 O(n)原创 2014-12-23 11:04:50 · 2418 阅读 · 0 评论