aaaζ


私信TA

用户名:uq_21159674949

访问量:470

签 名:

等  级
排  名 16188
经  验 768
参赛次数 0
文章发表 3
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

解题思路:按照从大到小或者从小到大的顺序遍历从m到n的所有值(m和n是输入的)。设定temp记录不同值对应len。设定max记录m和n之间(包括i和j)的整数的最大循环长度,每次得到len后与max比较并更新max和temp。
注意事项:在得到一组输入的max并输出后初始化max为0.

参考代码:

#include<iostream>

using namespace std;


int main(){

    int max = 0; //max为需要输出的结果

    int temp = 1; //temp记录各数从本身到1经历的数的个数

    int m, n; 

    while(cin>>m>>n){

        int t = m; //将m赋值给t,n赋值给j,保留m,n的值不变便于输出

        int j = n;

        if(t<j){   //从大到小遍历,先比较大小

            t = t + j;

            j = t - j;

            t = t - j;

        }

        while(t>=j){ 

            int i = t; //用i记录t,不改变t的值,t的值只在之后自减,达到便利的目的

            while(i!=1){

            if(i%2==0){

                temp++;

                i = i/2;

            }

            else{

                temp++;

                i = i*3+1;

            }

        }

        if(temp>max)

            max = temp;

        temp = 1; //初始化temp

        t--;


        }

        cout<<m<<" "<<n<<" "<<max<<endl;

        max =0; //初始化max

    }

    return 0;

}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区