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