POJ1207-The 3n + 1 problem

  1. //这题是很基础的题目!但上级比赛时忽略了一点,总是导致wrong,哎!遗憾!!

  2. #include<iostream>
  3. using namespace std;
  4. #define MAX 10000 int main()
  5. {
  6.  int cy[MAX];
  7.  int num1,num2;  cy[0]=0;  cy[1]=1;
  8.  for(int i=2;i<MAX;i++)
  9.  {  
  10.  int c=1;   int n=i;  
  11.  while(true)   
  12. {    
  13. if(n<i)  
  14.   {   
  15.   c--;   
  16.   c+=cy[n];
  17.     cy[i]=c;
  18.     break;  
  19.   }    
  20. else   
  21.  {    
  22.  if(n%2==0)   
  23.    n=n/2;   
  24.   else   
  25.    n=3*n+1;   
  26.   c++;   
  27.  }  
  28.  }  
  29. }
  30.  while(cin>>num1>>num2)
  31.  {   
  32. int max=0;   if(num1<num2)
  33.   {  
  34.   for(int i=num1;i<=num2;i++)
  35.    {    
  36.  if(cy[i]>max)      max=cy[i];  
  37.   }  
  38.  }   
  39. else
  40.   {  
  41.   for(int i=num2;i<=num1;i++)  
  42.   {     
  43. if(cy[i]>max)      max=cy[i];   
  44.  }    
  45.   }  
  46.  cout<<num1<<" "<<num2<<" "<<max<<endl;
  47.  }  
  48. return 0;
  49. }

转载于:https://www.cnblogs.com/Deng1185246160/archive/2013/01/13/2858222.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值