zoukankan      html  css  js  c++  java
  • 欧拉计划第14题题解

    Longest Collatz sequence

    The following iterative sequence is defined for the set of positive integers:

    n → n/2 (n is even)
    n → 3n + 1 (n is odd)

    Using the rule above and starting with 13, we generate the following sequence:

    13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1

    It can be seen that this sequence (starting at 13 and finishing at 1) contains 10 terms. Although it has not been proved yet (Collatz Problem), it is thought that all starting numbers finish at 1.

    Which starting number, under one million, produces the longest chain?

    NOTE: Once the chain starts the terms are allowed to go above one million.

    最长考拉兹序列

    在正整数集上定义如下的迭代序列:

    n → n/2 (若n为偶数)
    n → 3n + 1 (若n为奇数)

    从13开始应用上述规则,我们可以生成如下的序列:

    13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1

    可以看出这个序列(从13开始到1结束)共有10项。尽管还没有被证明,但我们普遍认为,从任何数开始最终都能迭代至1(“考拉兹猜想”)。

    从小于一百万的哪个数开始,能够生成最长的序列呢?

    注: 序列开始生成后允许其中的项超过一百万。

    解题思路

    本来想记忆化搜索,但是感觉数的范围不能确定。
    所以直接就用递归实现了。
    实现代码如下:

    #include <bits/stdc++.h>
    using namespace std;
    const int maxn = 55;
    int f(long long n) {    // 返回经过多少次变成1
        if (n == 1) return 1;
        if (n%2) return 1 + f(3*n+1);
        else 1 + f(n/2);
    }
    void output(long long n) {  // 输出变化方案
        if (n == 1) {
            cout << n << endl;
            return;
        }
        cout << n << " → ";
        if (n%2) output(3*n+1);
        else output(n/2);
    }
    int main() {
        int n = 0, ans = 0;
        for (int i = 1; i < 1000000; i ++) {
            int tmp = f(i);
            if (tmp > ans) {
                n = i;
                ans = tmp;
            }
        }
        cout << n << " , " << ans << endl;
        // output(n);
        return 0;
    }
    

    100万之内最小的数字是 837799 , 它一共经历了 196 次才变成 1。

  • 相关阅读:
    为什么大多Virtual Globe程序纵向旋转效率比较低
    惠普卖印刷服务 GIS卖什么?
    OpenLayers的新功能:矢量支持
    Google部分开源GMap API
    为OpenLayers 2.3添加Overview窗口
    从Grid控件到GIS软件
    GIS(数据)浏览器的点点滴滴
    ArcGIS 9.3和ArcGIS 10,一点感想
    关注:Pitney Bowes以4.08亿美金收购Mapinfo
    ArcGIS Server安装的几个问题
  • 原文地址:https://www.cnblogs.com/quanjun/p/12327806.html
Copyright © 2011-2022 走看看