/*

1293. 3n+1数链问题

Constraints

Time Limit: 1 secs, Memory Limit: 32 MB

Description

在计算机科学上,有很多类问题是无法解决的,我们称之为不可解决问题。然而,在很多情况我们并不知道哪一类问题可以解决,那一类问题不可解决。现在我们就有这样一个问题,问题如下:

  1. 1.       输入一个正整数n;
  2. 2.       把n显示出来;
  3. 3.       如果n=1则结束;
  4. 4.       如果n是奇数则n变为3n+1,否则n变为n/2;
  5. 5.       转入第2步。

例如对于输入的正整数22,应该有如下数列被显示出来:

22  11  34  17  52  26  13  40  20  10  5  16  8  4  2  1

我们推测:对于任意一个正整数,经过以上算法最终会推到1。尽管这个算法很简单,但我们仍然无法确定我们的推断是否正确。不过好在我们有计算机,我们验证了对于小于1,000,000的正整数都满足以上推断。

对于给定的正整数n,我们把显示出来的数的个数定义为n的链长,例如22的链长为16。

你的任务是编写一个程序,对于任意一对正整数ij,给出ij之间的最长链长,当然这个最长链长是由ij之间的其中一个正整数产生的。我们这里的ij之间即包括i也包括j。

Input

输入文件只有一行,即为正整数ijij之间以一个空格隔开。0 < ij < 10,000。

Output

文件只能有一行,即为ij之间的最长链长。

Sample Input

1 10

Sample Output

20

Problem Source

ZSUACM Team Member    */

//前面是题目的原题

/*起初一开始是没有用递归来实现,分析问题觉得比较简单,可以完成,都是后面发现超时非常严重*/

//起初的代码如下

/*

#include<iostream>

using namespace std;

int main(){
 
 int i,j;
 int max = 0;
 cin>>i>>j;
 
 for(int t=i;t<=j;t++){
  int count = 0;
  while(t!=1){
   if(t%2==0){
    t = t/2;
   }
   else{
    t = 3*t +1;
   }
   count ++;
  }
  if(max < count +1) max = count+1;
 }
 
} */

//发现上面的代码超时非常的恐怖,所以觉得递归式最好的办法,由于这个题目的步骤重复比较明显,每一步都是利用

//上一步的,所以递归感觉简单快速

//ac的码如下

#include<iostream>

using namespace std;

int count1(int t,int count){
 if(t==1) return count;
 else{
  if(t%2==0) count1(t/2,count+1);
  else count1(3*t+1,count+1);
 }
}

int main(){
 
 int i,j;
 int max = 0;
 cin>>i>>j;
 
 for(int t=i;t<=j;t++){
  int count = 0;
        count = count1(t,count);
  if(max < count+1) max = count +1;
 }
 cout<<max<<endl;
}

1293. 3n+1数链问题 2016 12 23的更多相关文章

  1. My latest news(--2016.12.31)

    2016.12.31  前一天晚上看 “纪实新闻” ,白天看视频,晚上刷题,看电影<湄公河行动> 2016.12.30 18:36 昨天上午考完了本学期的最后一门课程,下午乒乓+值班,今天 ...

  2. mysql查询练习题-2016.12.16

    >>>>>>>>>> 练习时间:2016.12.16 编辑时间:2016-12-20-->22:12:08 题: 涉及:多表查询.ex ...

  3. 更新日志(建议升级到2016.12.17) && 更新程序的方法

    更新程序的方法: 1,在控制面板里点击备份当前数据库文件到磁盘,把当天获取的信息从内存写到磁盘/存储卡.2,下载最新版的源码 wget -O "infopi.zip" " ...

  4. 关于2016.12.12——T1的反思:凸包的意义与应用

    2016.12.12 T1 给n个圆,保证圆圆相离,求将圆围起来的最小周长.n<=100 就像上图.考场上,我就想用切线的角度来做凸包.以圆心x,y排序,像点凸包一样,不过用两圆之间的下切线角度 ...

  5. U3D笔记11:47 2016/11/30-15:15 2016/12/19

    11:47 2016/11/30Before you can load a level you have to add it to the list of levels used in the gam ...

  6. rhel 7.0 配置centos yum源(2016/12/8),成功!

    1.首先查看redhat 7.0系统本身所安装的那些yum 软件包: rpm -qa | grep yum #列出所有已安装的yum包 2.删除这些包: rpm -e *.rpm --nodeps # ...

  7. Oracle中把一个DateTime的字符串转化成date类型。to_date('2016/12/8 18:55:43','yyyy/MM/dd hh24:mi:ss'),

    Oracle中把一个DateTime或者该形态字符串转化成date类型. to_date('2016/12/8 18:55:43','yyyy/MM/dd hh24:mi:ss'), 或者: sele ...

  8. IP通信基础课堂笔记----关于数链层

    课前回顾 IOS从上到下分别有:应用层,传输层,网络层,数链层,物理层. IP是网络层的地址,MAC是数链层的地址,IP必须通过ARP才能转换成MAC地址. 课堂内容 1.如何在数链层实现发送端数据无 ...

  9. G - Game HDU - 5242 (数链剖分)

    题目链接: G - Game HDU - 5242 题目大意:首先是T组测试样例,给出一颗以1节点为根的树,每个节点有各自的价值,有m次从根节点出发向下走到叶子节点的机会,每次会得到所有经过节点的权值 ...

随机推荐

  1. WAP端 touch事件触发顺序记录

    IOS7.0 safari 滚动滚动条的时候, 最后手指放开 (scroll 总是在 touchend后面,所以要用 setTimeout) touchstart touchmove(多个) touc ...

  2. 318. Maximum Product of Word Lengths

    Given a string array words, find the maximum value of length(word[i]) * length(word[j]) where the tw ...

  3. redis命令String

    $ keys * $ rename oldkey newkey $ renamex oldkey newkey 新key存在抛出异常 $ dbsize $ expire key 时间(秒) $ ttl ...

  4. windows访问lnmp配置的虚拟域名

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://linuxzkq.blog.51cto.com/9379412/1630217 实 ...

  5. robot framework 安装配置

    robot framework 是一款专门用作自动化测试的框架,提供了丰富的内置库,与第三方库,也支持用户自己编写的库,robot framework +library 可以 用来做ui的自动化测试, ...

  6. IIS发布项目 遇到的error

    HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容. 重新注册一下.net framework试试,当然这一步骤也可以排在第一位. 32位的Windows: ...

  7. js中原型继承的三种方式

  8. nullcon HackIM 2016 -- Crypto Question 3

    After entring the luxurious condomium,you get the feel that you are in home of a yester Star. the ex ...

  9. 九宝老师微信小程序开发的过程

  10. css总结

    1. css中的role属性 html 里面的 role 本质上是增强语义性,当现有的HTML标签不能充分表达语义性的时候,就可以借助role来说明.通常这种情况出现在一些自定义的组件上,这样可增强组 ...