题目链接:
http://bailian.openjudge.cn/practice/1207
Version 1.0 (2014-11-01)
Memory = 260 kb
Time = 0 ms
#include <stdio.h>
int CLs[100000] = {0};
int GetCL(int n)
{
int CL = 1;
while (n != 1) {
/* if (CLs[n]) {
return CL + CLs[n];
}
else { */
if (n >> 1 << 1 == n) {
n = n >> 1;
}
else {
n = 3 * n + 1;
}
CL++;
// }
}
return CL;
}
int main()
{
int min, max;
while (scanf("%d", &min) != EOF) {
int CL = 0, tmp = 0;
scanf("%d", &max);
for (int i = min; i <= max; i++) {
tmp = GetCL(i);
if (tmp >= CL) CL = tmp;
}
for (int i = max; i <= min; i++) {
tmp = GetCL(i);
if (tmp >= CL) CL = tmp;
}
printf("%d %d %d\n", min, max, CL);
}
return 0;
}
本文提供了一个解决洛谷1207问题的C语言实现方案,该方案使用了迭代方法来计算给定范围内所有整数的Collatz猜想序列长度的最大值,并通过比较两个边界内的序列长度确定最终结果。

被折叠的 条评论
为什么被折叠?



