/*

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. 关于Onvif的event

    昨天又仔细研究了一下camera的alarm功能,发现原来很简单,首先订阅一下,即create,拿到订阅号后直接pull,一旦收到信息就再次用订阅号pull.参考http://www.doc88.co ...

  2. VC++ 简单的打印功能(对话框模式下)

    不多说,直接上代码 void CParamDlg::OnBnClickedButton6() { // TODO: 在此添加控件通知处理程序代码 CDC dc; CPrintDialog dlg(TR ...

  3. 写了好多次SSH现在对于框架还是有一定的基础了,但是对于框架下我们该如何进行操作呢???

    首先,对于一个老手来说,我们最快捷的就是ctrl+c和ctrl+v,但是我们自己应该复制哪一些代码呢? 1.在我们导完包之后,我们需要写的就是web.xml,在其中,我们要有过滤器及映射和监听器. w ...

  4. 给员工授予svn相关权限

    步骤: 了解:地址2.4是代码svn.地址2.16是文档svn 以授予 SVN地址是:http://172.16.2.16/svn/SystemNetworkBU  权限组为mam_group,是只读 ...

  5. [C语言]关于struct和typedef struct

    在C中定义一个结构体类型要用typedef: *************************************************************************** t ...

  6. 关于AFNetworking菊花转圈圈的问题

    刚开始接触AFN的时候,发现菊花老是不转,百度到大神的博客上,说AFN里面的API的网络加载菊花默认是关闭的(才发现默认情况下AFN的转圈圈的菊花是关闭的)需要手动打开才能够显示转圈圈,打开的方法是: ...

  7. js event 事件冒泡和事件捕获详细介绍

    . 参考: http://www.jb51.net/article/42492.htm 图: 假设一个元素div,它有一个下级元素p.<div> <p>元素</p> ...

  8. java 中如何声明线程安全的集合 set, map 和list

    线程安全的集合 http://blog.sina.com.cn/s/blog_508938e10102v1ig.html //make thread-safe list List MyStrList ...

  9. shell脚本中的反引号使用 `

    反引号是~的英文切换 在shell脚本中,反引号允许将shell命令的输出赋值给变量. test=`date` 这样shell会执行反引号中的命令.并将执行的结果赋值给变量tests.

  10. HDU2063 过山车

    过山车 RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做partner和她同坐.但是, ...