至今笔试都悲剧的被拒,先发几道笔试中遇到的算法题
1.
给定一整数序列A1, A2,... An (可能有负数),求A1~An的一个子序列Ai~Aj,使得Ai到Aj的和最大.
例如:整数序列-2, 11, -4, 13, -5, 2, -5, -3, 12, -9的最大子序列的和为21。
int max_sub2(int a[], int size)
{
int max = 0;
int temp_sum = 0;
for(int i = 0; i < size; i++)
{
temp_sum += a[i];
if(temp_sum > max)
max = temp_sum;
else if(temp_sum < 0)
temp_sum = 0;
}
return max;
}
2. 任何一个基于"比较"的内部排序的算法,若对6个元素进行排序,则在最坏情况下所需的比较次数至少为____。
据严蔚敏数据结构,问题等价于给n个不同的砝码和一台天平要称几次能分辨它们的顺序。含n个记录的序列可能出现的初始状态有n!个,则描述n个记录排序过程的判定树必有n!个叶子节点,若有n个叶子节点,则二叉树的高度至少为log 2 n,(2为底),也即是说必然存在一条长为log 2 n!的路径,求出来n为10,(取上界)
3. 对一个表达式求值时,首先要把表达式转换为后缀表达式,然后在利用栈求值。