uva 3n+1 基础题

注意 题意输入的循序不能变 还有就是设置一个变量数组 记忆优化

#include <stdio.h>

#define INF 10000000

int rem[INF]={0},max,sum;

int main()
{
	int n,a,b,i,f,s,o;
	rem[1]=1;
	while(scanf("%d%d",&a,&b)!=EOF)
	{
		max=-1;
		
		s=a;
		o=b;

		if(a>b)
		{
			a=o;
			b=s;
		}
		
		for(i=a;i<=b;i++)
		{
		
			n=i;
			sum=1;		
			//printf("fz:%d %d %d %d\n",i,max,sum,rem[i]);
			while(n!=1)
			{
				//printf("%d\n",n);
				if(n<INF&&rem[n])
				{
					sum+=rem[n]-1;
					break;
				}else
				{
					if(n%2)n=3*n+1;
					else n=n/2;
					sum++;
				}
			}
			if(i<INF)rem[i]=sum;
			if(max<sum)
			{
				max=sum;
				f=i;
			}
			//printf("%d\n",sum);
		}
		printf("%d %d %d\n",s,o,max);
	}

	return 0;
}

  

posted @ 2012-04-01 21:17  shijiwomen  阅读(154)  评论(0编辑  收藏  举报