解题思路:明明写的很对,可就是错误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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复