#380. CSP2022PJ-17
CSP2022PJ-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); //第19行
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 的正整数,完成下面的判断题和单选题:
(判断题)
当输入为“7 3”时,第 19 行用来取最小值的 min 函数执行了 449 次。( )
{{ select(1) }}
- 对
- 错
输出的两行整数总是相同的。( )
{{ select(2) }}
- 对
- 错
当 m 为 1 时,输出的第一行总为 n。( )
{{ select(3) }}
- 对
- 错
(选择题)
算法 g(n,m) 最为准确的时间复杂度分析结果为( )
{{ select(4) }}
- 𝑂(𝑛3/2𝑚)
- 𝑂(𝑛𝑚)
- 𝑂(𝑛2𝑚)
- 𝑂(𝑛𝑚2)
当输入为“20 2”时,输出的第一行为( )
{{ select(5) }}
- “4”
- “5”
- “6”
- “20”
(4 分)当输入为“100 100”时,输出的第一行为( )
{{ select(6) }}
- “6”
- “7”
- “8”
- “9”
相关
在下列比赛中: