阅读程序
//这题有点超纲,pass
01 #include <algorithm>
02 #include <iostream>
03 #include <limits>
04
05 using namespace std;
06
07 const int MAXN = 105;
08 const int MAXK = 105;
09
10 int h[MAXN][MAXK];
11
12 int f(int n, int m)
13 {
14 if (m == 1) return n;
15 if (n == 0) return 0;
16
17 int ret = numeric_limits<int>::max();
18 for (int i = 1; i <= n; i++)
19 ret = min(ret, max(f(n - i, m), f(i - 1, m - 1)) + 1);
20 return ret;
21 }
22
23 int g(int n, int m)
24 {
25 for (int i = 1; i <= n; i++)
26 h[i][1] = i;
27 for (int j = 1; j <= m; j++)
28 h[0][j] = 0;
29
30 for (int i = 1; i <= n; i++) {
31 for (int j = 2; j <= m; j++) {
32 h[i][j] = numeric_limits<int>::max();
33 for (int k = 1; k <= i; k++)
34 h[i][j] = min(
35 h[i][j],
36 max(h[i - k][j], h[k - 1
当输入为“ 7 3 ”时,第 19 行用来取最小值的 min 函数执行了 449 次。( )
输出的两行整数总是相同的。( )
当 m 为 1 时,输出的第一行总为 n 。( )
算法 g(n,m) 最为准确的时间复杂度分析结果为( )。
O(nm)
当输入为“ 20 2 ”时,输出的第一行为( )。
“ 4 ”
“ 5 ”
“ 6 ”
“ 20 ”
(4 分) 当输入为“ 100 100 ”时,输出的第一行为( )。
“ 6 ”
“ 7 ”
“ 8 ”
“ 9 ”
发表评论