跳到主要内容

2025-2026学年下学期期中

2025-2026学年下学期期中试卷

  1. 给出下面各个递推式中 T(n)T(n) 的渐进上界和下界。假设当 n2n \le 2 时,T(n)T(n) 为常数。使你的界尽可能紧,并给出理由。(10 分)

    (1) T(n)=2T(n/2)+n4T(n) = 2T(n / 2) + n^4

    (2) T(n)=T(7n/10)+nT(n) = T(7n / 10) + n

    (3) T(n)=16T(n/4)+n2T(n) = 16T(n / 4) + n^2

    (4) T(n)=7T(n/3)+n2T(n) = 7T(n / 3) + n^2

    (5) T(n)=7T(n/2)+n2T(n) = 7T(n / 2) + n^2

    (6) T(n)=2T(n/4)+nT(n) = 2T(n / 4) + \sqrt{n}

    (7) T(n)=T(n2)+n2T(n) = T(n - 2) + n^2


  2. 给定 nn 个正整数 a1,a2,,ana_1, a_2, \ldots, a_n。现在要将这些数字分成两堆,用 S1S_1 表示第一堆中数字之和,S2S_2 表示第二堆中数字之和。请设计算法来找到让 S1S2|S_1 - S_2| 最小的分法,并分析时间复杂度。(10 分)


  3. 给定一个数组 A=[a1,a2,,an]A = [a_1, a_2, \ldots, a_n],找出最大子数组和,并返回对应的子数组。请设计时间复杂度为 O(n)O(n) 的算法。(15 分)


  4. 给定一个非负整数数组 A=[a1,a2,,an]A = [a_1, a_2, \ldots, a_n],其中 aia_i 表示从位置 ii 最多可以向右跳多少步。初始时你位于下标 00,请设计算法来判断你是否能够到达最后一个位置。(15 分)


  5. 给定一个序列 (a1,a2,,an)(a_1, a_2, \ldots, a_n),找出其中最长上升子序列,并返回该序列的长度。请设计时间复杂度为 O(nlogn)O(n \log n) 的算法。(25 分)


  6. 给定一个序列 (a1,a2,,an)(a_1, a_2, \ldots, a_n),找出其中最长的回文子序列,并返回该序列的长度。请设计算法并分析时间复杂度。(25 分)