2012-9-29 大众点评网笔试题
来源:互联网 发布:macbook pro 删除软件 编辑:程序博客网 时间:2024/05/02 03:34
1. 最大公约数的求法:欧几里德算法
2. 一个楼梯有N级,现在一步可以走1阶、2阶和3阶,问上N级有多少中走法?
int function(int m, int n){if(m % n ==0)return n;return function(n, m % n);}
2. 一个楼梯有N级,现在一步可以走1阶、2阶和3阶,问上N级有多少中走法?
这一题在网上有很多,只不过网上给出的没有3阶的走法,不过思路都是一样的,都是斐波纳契数列的一个变种而已。当上N阶阶梯时,可以直接从N-3级直接上3阶,可以从N-2级直接上2阶,也可以从N-1级直接上一级(注意,如果从N-3级先上一阶,然后再上2阶,则跟从N-2阶的情况重复了,其他情况类似),故可得知f(n)=f(n-1)+f(n-2)+f(n-3)。从题中可以轻易的得出f(1)=1, f(2)=2, f(3)=4. 具体的代码如下所示:
int calstepNumbers(int number){int a[] = {1,2,4,0};if(number <= 0) return 0;if(number < 4) return a[number];return calstepNumbers(number-1) + calstepNumbers(number-2) + calstepNumbers(number-3);}
int calstepNumbers(int number) //非递归算法,运算时间比递归速度快,因为递归运算会存在很多重复计算{int a[] = {1,2,4,0};if(number <= 0) return 0;if(number < 4) return a[number];for(int i = 4; i <= number; i++){a[3] = a[0] + a[1] + a[2];a[0] = a[1];a[1] = a[2];a[2] = a[3];}return a[3];}
3. 有一个整数数组长度为n,其中某个整数m的个数超过了该数组长度的一半,请找出该数字?要求算法时间为O(n).
整数m的个数超过了数组长度的一半,每次删除两个不同整数后,m的个数也会超过剩余数组个数的一半,因此只要不断继续这个过程,最终剩下的数肯定m,具体代码如下所示:
int findWaterPoster(int* array, int size){ int times = 0, poster = 0; for(int i = 0; i < size; i++) { if(times == 0) poster = i; if(array[i] == array[poster]) times++; else times--; } return array[poster];}
- 2012-9-29 大众点评网笔试题
- 2012大众点评网笔试题
- 大众点评笔试题
- 大众点评网笔试总结
- 2013大众点评笔试题
- 2016大众点评笔试题
- 两道大众点评网技术部的笔试题
- 2013年大众点评网的一道程序笔试题
- 9-24号大众点评技术研发笔试题
- 大众点评笔试题编程题
- 大众点评 在线笔试题 2014
- 大众点评笔试题:十六进制序列
- 大众点评2015笔试题(答案)
- 大众点评笔试总结
- 大众点评—笔试
- 大众点评在线笔试题目
- 大众点评2014笔试题目
- 【校园招聘】2013大众点评网软件研发岗笔试题
- 指针 没看完 需要时再用
- 详解link
- 网页时钟实现代码html5
- 转 win7 vs2010 64位配置opencv2.3.1
- java并发的初步思考 —— 同步实现及比较
- 2012-9-29 大众点评网笔试题
- 正能量:前思科中国区总裁林正刚先生以自己35年职业经历和心得
- poj 2288 (MST) #by nobody
- 把一个godaddy的域名转回国内的注册商
- 常用正则表达式
- 移动互联网应用分类
- 老板看中员工的20个方面 你做到了哪些?
- Javascript面向对象编程:封装
- Redboot教程