- 题目描述
- 用 记忆数组+递归 时间复杂度约等于 递推
#include<iostream>
using namespace std;
int num[10000005];
int func(long long x) {
if (1 == x) return 1;
if (x < 10000000 && num[x]) return num[x];
int t = 0;
if (x % 2 == 0) t = func(x / 2) + 1;
else t = func(3 * x + 1) + 1;
if (x < 10000000) num[x] = t;
return t;
}
int main() {
int ans = 1;
for (int i = 1; i < 1000001; ++i)
if (func(ans) < func(i)) ans = i;
cout << ans << endl;
return 0;
}