0
点赞
收藏
分享

微信扫一扫

算法工程师综合练习卷


1

class program
{
static void Main(string[] args)
{
int i;
i = x(x(8));
}
static int x(int n)
{
if (n <= 3)
return 1;
else
return x(n - 2) + x(n - 4) + 1;
}
}




递归算法x(x(8))需要调用几次函数x(int n)?


9


12


18


24
//动手画 X(8)=9

2



从根节点开始,沿着树的宽度遍历树的节点。如果所有节点均被访问,则算法中止



常采用先进后出的栈来实现算法



空间的复杂度为O(V+E),因为所有节点都必须被储存,其中V是节点的数量,E是边的数量



时间复杂度为O(V+E),因为必须寻找所有到可能节点的所有路径,其中V是节点的数量,E是边的数量




3


1


2


3


4


4


B-树和B+树都是平衡的多叉树


B-树和B+树都可用于文件的索引结构


B-树和B+树都能有效地支持顺序检索


B-树和B+树都能有效地支持随机检索


5


4


5


6


7

6



DGEBFHAC



DGEBHFCA



DEGHBFCA



DEGBHACF

7



堆排序



插入排序



快速排序



直接选择排序





8



O(N * M)



O(N)



O(M)



以上都不正确





9 有2n个人排队进电影院,票价是50美分。在这2n个人当中,其中n个人只有50美分,另外n个人有1美元(纸票子)。愚蠢的电影院开始卖票时1分钱也没有。
问: 有多少种排队方法 使得 每当一个拥有1美元买票时,电影院都有50美分找钱
注: 
1美元=100美分
拥有1美元的人,拥有的是纸币,没法破成2个50美分



(2n)!/[n!n!]



(2n)!/[n!(n+1)!]



(2n)!/[n!(n-1)!]



(2n + 1)!/[n!(n-1)!]


//卡特兰数




10


O(n^2*(lgn))


O(n^2)


O(lgn)


O(n*n*n)


//公式? 忘了



11


3


4


5


8


//看别人的:设从n加到m和为1000,则(n+m)(m-n+1)/2=1000,即(n+m)(m-n+1)=2000,即把2000分解成两个数的乘积,且这两个数为一奇一偶。

2000=(2^4)*(5^3),于是奇数可能为5^0,5^1,5^2,5^3,即有四组解



12 一个有序数列,序列中的每一个值都能够被2或者3或者5所整除,1是这个序列的第一个元素。求第1500个值是多少?


2040


2042


2045


2050


//

2、3、5的最小公倍数是30。[ 1, 30]内符合条件的数有22个。如果能看出[ 31, 60]内也有22个符合条件的数,那问题就容易解决了。也就是说,这些数具有周期性,且周期为30.第1500个数是:1500/22=68   1500%68=4。也就是说:第1500个数相当于经过了68个周期,然后再取下一个周期内的第4个数。一个周期内的前4个数:2,3,4,5。


故,结果为68*30=2040+5=2045




13


a(b-c*d)*+e-(f/g(h+i*j-k)*)


a(b-(cd*))*+e-(fg/(h+ij*-k)*)


a(bcd*-)*+e-(fg/hij*+k-*)


abcd*-*e+fg/hij*+k-*-
//保证运算法栈顶小于当前的,注意括号的影响


14


哈希表是一个在时间和空间上做出权衡的经典例子。如果没有内存限制,那么可以直接将键作为数组的索引。那么所有的查找时间复杂度为O(1);


线性表实现相对比较简单


平衡二叉树的各项操作的时间复杂度为O(logn)


平衡二叉树的插入节点比较快




15 下面程序的功能是输出数组的全排列。请填空。

void perm(int list[], int k, int m)
{
if ( )
{
copy(list,list+m,ostream_iterator<int>(cout," "));
cout<<endl;
return;
}
for (int i=k; i<=m; i++)
{
swap(&list[k],&list[i]);
( );
swap(&list[k],&list[i]);
}
}


k!=m 和 perm(list,k+1,m)


k==m 和 perm(list,k+1,m)


k!=m 和 perm(list,k,m)


k==m 和 perm(list,k,m)



16


不确定


正确


错误


//不知道对不对!!!



17


EDCBA


DECBA


DCEAB


ABCDE





18


24


30


53


69


//

     30
  17   13
 8 9  6 7
  4 5
(4+5)*3+(6+7+8)*2=27+42=69


19 用某种排序方法对关键字序列(25,84,21,47,15,27,68,35,20)进行排序,序列的变化情况采样如下:
20,15,21,25,47,27,68,35,84
15,20,21,25,35,27,47,68,84
15,20,21,25,27,35,47,68,84
请问采用的是以下哪种排序算法()


选择排序


希尔排序


归并排序


快速排序





20


10


9


8


7
//

设二叉树的高度为n,则有:



2^n-1>360



2^(n-1) -1<360



且n为正整数



n=9




举报

相关推荐

0 条评论