博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Poj1207 The 3n + 1 problem(水题(数据)+陷阱)
阅读量:5128 次
发布时间:2019-06-13

本文共 2949 字,大约阅读时间需要 9 分钟。

一、Description

Problems in Computer Science are often classified as belonging to a certain class of problems (e.g., NP, Unsolvable, Recursive). In this problem you will be analyzing a property of an algorithm whose classification is not known for all possible inputs.
Consider the following algorithm:
1. 		 input n		2. 		 print n		3. 		 if n = 1 then STOP		4. 		 		 if n is odd then   n <-- 3n+1		5. 		 		 else   n <-- n/2		6. 		 GOTO 2
Given the input 22, the following sequence of numbers will be printed 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
It is conjectured that the algorithm above will terminate (when a 1 is printed) for any integral input value. Despite the simplicity of the algorithm, it is unknown whether this conjecture is true. It has been verified, however, for all integers n such that 0 < n < 1,000,000 (and, in fact, for many more numbers than this.)
Given an input n, it is possible to determine the number of numbers printed before the 1 is printed. For a given n this is called the cycle-length of n. In the example above, the cycle length of 22 is 16.
For any two numbers i and j you are to determine the maximum cycle length over all numbers between i and j.

Input

The input will consist of a series of pairs of integers i and j, one pair of integers per line. All integers will be less than 10,000 and greater than 0.
You should process all pairs of integers and for each pair determine the maximum cycle length over all integers between and including i and j.

Output

For each pair of input integers i and j you should output i, j, and the maximum cycle length for integers between and including i and j. These three numbers should be separated by at least one space with all three numbers on one line and with one line of output for each line of input. The integers i and j must appear in the output in the same order in which they appeared in the input and should be followed by the maximum cycle length (on the same line).
二、题解
       这题真正的核心部分其实非常水,但是他的输入数据和输出要求有陷阱。首先,输入的时候要计较i和j的大小,然后不要忘了输出的时候也要换过来。这题除了暴力解决以外,还可以用到记忆化存储方法打表。这里有不水的解法
import java.util.Scanner; public class Main { 	public static int getCycles(int m){		int sum=0;		 while(m!=1){  		   if(m % 2==0){  			   m=m / 2;  			   sum++;  		   }else{  			   m=3*m+1;  			   sum++;  		   }  	   }		 return sum+1;	}    public static void main(String[] args) {        Scanner cin = new Scanner(System.in);       int s,e,i;       while(cin.hasNext()){    	   s=cin.nextInt();    	   e=cin.nextInt();    	   boolean flag = false;    	   if(s > e){    		   int t=s;    		   s=e;    		   e=t;    		   flag=true;    	   }    	   int max=Integer.MIN_VALUE;    	   for(i=e;i>=s;i--){    		  int sum=getCycles(i);	    	  if(sum>max)    			   max=sum;    	   }    	   if(flag){    		   System.out.println(e+" "+s+" "+max);    	   }else    		   System.out.println(s+" "+e+" "+max);        }    }   }

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/AndyDai/p/4734188.html

你可能感兴趣的文章
zdz工具箱v1.5 android版本发布了,集成各种个人生活中常用的工具,方便日常使用管理...
查看>>
MVC AJAX
查看>>
[SCOI2005]繁忙的都市
查看>>
imx51-linux的cpuinfo之分析
查看>>
elementUI -- table相关的问题
查看>>
WINCE6.0+IMX515通过cfimager.exe烧录镜像文件
查看>>
Day08 数据处理
查看>>
Golang命令行库Cobra的使用
查看>>
centos7下部署Django(nginx+uwsgi+python3+django)
查看>>
集算器协助java处理结构化文本之对齐连接
查看>>
django环境部署-nginx环境
查看>>
android 網易云閱讀 書架的實現
查看>>
day9.初始函数练习题
查看>>
PHP Markdown 解析器Parsedown
查看>>
webpack升级4记录
查看>>
【计算机视觉】图像处理与计算机视觉基础,经典以及最近发展
查看>>
【QT开发】QT在windows下的exe应用程序如何在别人的电脑上直接运行
查看>>
加快sqlite的读写
查看>>
listen的参数backlog的意义
查看>>
xcode6 下 ios simulator 有 Home 键么?
查看>>