林深雾浓时


私信TA

用户名:18347919706

访问量:2235

签 名:

等  级
排  名 4678
经  验 1654
参赛次数 0
文章发表 2
年  龄 0
在职情况 学生
学  校 内蒙古农业大学
专  业

  自我简介:

解题思路:明明写的很对,可就是错误33%,查了两小时的资料,终于知道问题出在哪里了!

注意事项:输入i,j时,并不知道大小情况,所以输入后需要比较一次,但是输出时,如果在最后输出,那可能输出的是比较大小以后的i,j,即i如果大于j,输出时i,j将换位置。所以必须要在刚输入未比较大小时就将i,j输出。杭电的题目对细节要求可以说是很高了。

参考代码:错误33%的代码:

#include <iostream>

using namespace std;

int main(){

int i,j,t=0,k=0,max=0;

while(cin>>i>>j && i>0 &&j>0){

if(i>j){max=i;i=j;j=max;}

max=0;

for(int a=i;a<=j;a++){

k=0;

t=a;

 while(t!=1){

 if(t%2==0){

t=t/2;

k++;}

 else{

t=t*3+1;

k++;}

 }

 k++;

if(k>max)

max=k;

}

cout<<i<<' '<<j<<' '<<max<<endl;

}

return 0;

}


改正以后的:

#include <iostream>

using namespace std;

int main(){

int i,j,t=0,k=0,max=0;

while(cin>>i>>j && i>0 &&j>0){

cout<<i<<' '<<j<<' ';

if(i>j){max=i;i=j;j=max;}

max=0;

for(int a=i;a<=j;a++){

k=0;

t=a;

 while(t!=1){

 if(t%2==0){

t=t/2;

k++;}

 else{

t=t*3+1;

k++;}

 }

 k++;

if(k>max)

max=k;

}

cout<<max<<endl;

}

return 0;

}


 

0.0分

17 人评分

  评论区

感谢!!
2019-11-22 13:53:00
#include <stdio.h>
int main()
{
	int i,j,count,max=0,t;
	while(scanf("%d %d",&i,&j))
	{
		if(i>j){max=i;i=j;j=max;}
		max=0;
		printf("%d %d ",i,j);
		for(int a=i;a<=j;a++)
		{
			count=1;
			t=a;
			while(t!=1)
			{
			if(t%2==0)	t=t/2;
			else	t=t*3+1;
			count++;
			}
			if(max<count)	max=count;
		}
		printf("%d\n",max);
	}
	return 0;
}
有大佬可以帮我看看为什么上传显示答案错误吗?用DEV编译之后好像和答主一样啊?
2019-11-16 23:57:08
真的谢谢了,爱你~
2019-11-07 22:12:16
1 1000000 不出数据,楼主怎么过的
2019-09-07 00:28:28
爱死你了
2019-08-07 17:24:09
果然是细节决定成败,感谢!
2019-03-12 17:30:16