组合题6 个小题
已作答 0 / 6
11 #include <algorithm>22 #include <iostream>33 #include <limits>4455 using namespace std;6677 const int MAXN = 105;88 const int MAXK = 105;991010 int h[MAXN][MAXK];11111212 int f(int n, int m)1313 {1414 if (m == 1) return n;1515 if (n == 0) return 0;16161717 int ret = numeric_limits<int>::max();1818 for (int i = 1; i <= n; i++)1919 ret = min(ret, max(f(n - i,m), f(i - 1, m - 1)) + 1);2020 return ret;2121 }22222323 int g(int n, int m)2424 {2525 for (int i = 1;i <= n; i++)2626 h[i][1]= i;2727 for (int j = 1;j<= m; j++)2828 h[0][j]= 0;29293030 for (int i= 1; i <= n; i++){3131 for (int j= 2; j <= m; j++){3232 h[i][j] = numeric_limits<int>::max();3333 for (int k = 1;k <= i;k++)3434 h[i][j]= min(3535 h[i][j],3636 max(h[i - k][j],h[k - 1][j - 1]) +1);3737 }3838 }39394040 return h[n][m];4141 }42424343 int main()4444 {4545 int n,m;4646 cin >> n>> m;4747 cout << f(n, m) << endl << g(n, m)<< endl;4848 return 0;4949 }假设输入的n、m均是不超过100 的正整数,完成下面的判断题和单选题:
判断题
输出的两行整数总是相同的。