至今笔试都悲剧的被拒,先发几道笔试中遇到的算法题
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_sub2(int a[], int size)


 {
{
 int  max = 0;
    int  max = 0;
 int temp_sum = 0;
    int temp_sum = 0;
 for(int i = 0; i < size; i++)
    for(int i = 0; i < size; i++)

 
     {
{
 temp_sum += a[i];
        temp_sum += a[i];
 if(temp_sum > max)
        if(temp_sum > max)
 max = temp_sum;
            max = temp_sum;
 else if(temp_sum < 0)
        else if(temp_sum < 0)
 temp_sum = 0;
            temp_sum = 0;
 }
    }
 return max;
    return max;
 }
}

2. 任何一个基于"比较"的内部排序的算法,若对6个元素进行排序,则在最坏情况下所需的比较次数至少为____。
   据严蔚敏数据结构,问题等价于给n个不同的砝码和一台天平要称几次能分辨它们的顺序。含n个记录的序列可能出现的初始状态有n!个,则描述n个记录排序过程的判定树必有n!个叶子节点,若有n个叶子节点,则二叉树的高度至少为log 2 n,(2为底),也即是说必然存在一条长为log 2 n!的路径,求出来n为10,(取上界)
3. 对一个表达式求值时,首先要把表达式转换为后缀表达式,然后在利用栈求值。