Notice: Undefined index: name in /usr/www/lib/views/home/viewtitle.html on line 188
-阅读程序 第 17 题
#include <algorithm>
#include <iostream>
#include <limits>

using namespace std;

const int MAXN = 105;
const int MAXK = 105;

int h[MAXN ][MAXK];

int f(int n, int m)
{
    if (m == 1) return n;
    if (n == 0) return 0;

    int ret = numeric_limits<int>::max();
    for (int i = 1; i <= n; i++)
        ret = min(ret, max(f(n - i, m), f(i - 1, m - 1))+1);
    return ret;
}

int g(int n, int m)
{
    for (int i = 1; i <= n; i++)
		h[i][1] = i;
    for (int j = 1; j <= m; j++)
        h[0][j] = 0;
        
    for (int i = 1; i <= n; i++) {
        for (int j = 2; j <= m; j++) {
            h[i][j] =numeric_limits<int>::max();
            for (int k = 1; k <= i; k++)
                h[i][j] = min(
                              h[i][j],
                              max(h[i - k][j], h[k - 1][j - 1])+1);
        }
    }
    
    return h[n][m];
}

int main()
{
    int n,m;
    cin >> n >>m;
    cout << f(n,m) <<endl <<g(n,m) <<endl;
    return 0;
}
假设输入的 n、m 均是不超过 100 的正整数,完成下面的判断题和单选题:
● 判断题
第 1 题 当输入为“7 3”时,第 19 行用来取最小值的 min 函数执行了 449 次。( )
第 2 题 输出的两行整数总是相同的。( )
第 3 题 当 m 为 1 时,输出的第一行总为 n。( )
● 单选题
第 4 题 算法 g(n,m)最为准确的时间复杂度分析结果为( )。
A. $O(n^{3/2}m)$
B. $O(nm)$
C. $O(n^2m)$
D. $O(nm^2)$
第 5 题 当输入为“20 2”时,输出的第一行为( )。
第 6 题 (4 分)当输入为“100 100”时,输出的第一行为( )。

解答部分以后会开放。