下面程序的时间复杂度为(record_choose 为记忆化数组):
int record_choose[MAXN][MAXM];
int choose(int n, int m) {
if (m == 0 || m == n)
return 1;
if (record_choose[n][m] == 0)
record_choose[n][m] = choose(n - 1, m - 1) + choose(n - 1, m);
return record_choose[n][m];
}
- A. O(2ⁿ)
- B. O(2m×(n−m))
- C. O(C(n,m))
- D. O(m×(n−m))
正确答案:D