读书人

名企招聘经典口试编程题集锦[第11-20题

发布时间: 2013-03-04 17:22:12 作者: rapoo

名企招聘经典面试编程题集锦[第11-20题]

声明:所有试题均来自网络。解答仅作参考,如对解答有疑问,或者有更好的解法,欢迎留言交流。

11、求1+2+…+n。

要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。

15、从上往下打印二叉树
输入一颗二叉树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
例如输入

8
/ \
6 10
/ \ / \
5 7 9 11

输出8 6 10 5 7 9 11。

18、斐波那契数列题目:定义Fibonacci数列如下:
{ 0 n=0
f(n)= { 1 n=1
{ f(n-1)+f(n-2) n>1

输入n,用最快的方法求该数列的第n项。
分析: 由于递归的写法效率太过低下,要求用非递归实现。

int g_N = 0;     //全局变量,存储n的值void FindSum(int n,int m){int* data = new int[n+1];for (int i=0;i!=n+1;++i)*(data+i)=0;g_N = n;FindSum(n,m,data);delete[] data;g_N = 0;}void FindSum(int n,int m,int* data){if(n<1 || m<1)return;if(m<n)n=m;if(n==m){*(data+n)=1;PrintData(data);}*(data+n)=1;FindSum(n-1,m-n,data);*(data+n)=0;FindSum(n-1,m,data);}void PrintData(int* data){for (int i=1;i<=g_N;++i){if(*(data+i)==1)cout<<i<<"  ";}cout<<endl;}

读书人网 >编程

热点推荐