POJ 1207 3N+1 Problem
更简单的水题,穷举法即可。
需要注意的点:
1.i 和 j的大小关系不确定,即有可能 i>j
2.即使i>j,最后输出的结果也要严格按照输出,亦即如果输入10,1,则对应输出也应为 10 1 20而不是1 10 20
代码如下:
1 /* 2 * File: 1207.h 3 * Author: chrischeng021 <chrischeng021@gmail.com> 4 * 5 * Created on July 9, 2015, 5:07 PM 6 */ 7 8 #ifndef _1207_H 9 #define _1207_H 10 11 int calculate(int n){ 12 int count = 1; 13 while(n != 1){ 14 n = (n%2 == 0 ? n/2 : 3*n+1); 15 count++; 16 } 17 return count; 18 } 19 20 void process(){ 21 int i,j,k,ret,tmp,left,right; 22 while(scanf("%d%d",&i, &j) != EOF && i > 0){ 23 ret = 0; 24 if(i < j){ 25 left = i; 26 right = j; 27 } 28 else{ 29 left = j; 30 right = i; 31 } 32 for(k = left;k <= right;k++){ 33 tmp = calculate(k); 34 ret = ret > tmp ? ret : tmp; 35 } 36 printf("%d %d %d\n",i, j, ret); 37 } 38 } 39 #endif 40 /* _1207_H */