这道题目我用了简单的暴力法,其实我觉得可以打一张表记录答案,然后直接输出,应为这道题目的数据就那么点,时间很充裕,所以也懒得写其他的方法了。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define MAXN 1000100
int f[MAXN];
int a,b;
int dfs(int u)
{
if(u==1) return 1;
if(u%2==0)
{
return 1+dfs(u/2);
}
else
{
return 1+dfs(u*3+1);
}
}
int main()
{
memset(f,-1,sizeof(f));
while(cin>>a>>b)
{
int s,e,ans=0;
s=min(a,b);
e=max(a,b);
for(int i=s;i<=e;i++)
{
if(f[i]==-1) f[i]=dfs(i);
ans=max(ans,f[i]);
}
cout<<a<<" "<<b<<" "<<ans<<endl;
}
return 0;
}