q1095
一,写题
1,我这个递归的错误我挺想搞出来的
int fa(int x) { if(x==1) return cnt; if(x%2==0) { x=x/2; cout<<"测试1:"<<x<<endl; cnt++; if(x==1) { cout<<"测试3:"<<cnt<<endl; return cnt; } else fa(x); } if(x%2!=0) { x=x*3+1; cout<<"测试2:"<<x<<endl; cnt++; if(x==1) { return cnt; } else fa(x); } }
2,希望你能搞出来。
因为你用自己方法不会的时候你再搞出来好像才是关键。
3,体现的好像是我对递归的不够。。掌握。。
4,我他妈好难受。。。想哭。。
5,希望你能好好把这个弄清楚。
1 1 #include<iostream> 2 2 using namespace std; 3 3 int a,b; 4 4 int cnt=1; 5 5 int big=1; 6 6 void fa(int x) 7 7 { 8 8 if(x==1) return ; 9 9 10 10 if(x%2==0) 11 11 { 12 12 x=x/2; 13 13 cnt++; 14 14 return fa(x); 15 15 } 16 16 if(x%2!=0) 17 17 { 18 18 x=x*3+1; 19 19 cnt++; 20 20 return fa(x); 21 21 } 22 22 } 23 23 int main(){ 24 24 int p,t; 25 25 26 26 while(cin>>a>>b) 27 27 { 28 28 if(a>b) 29 29 { 30 30 t=a; 31 31 p=b; 32 32 } 33 33 else 34 34 { 35 35 p=a; 36 36 t=b; 37 37 } 38 38 big=1; 39 39 for(int j=p;j<=t;j++) 40 40 { 41 41 cnt=1; 42 42 fa(j); 43 43 if(cnt>=big) 44 44 big=cnt; 45 45 } 46 46 cout<<a<<" "<<b<<" "<<big<<endl; 47 47 } 48 48 return 0; 49 49 }
二,总结
1,首先对待每道有价值的题目,第一次OJ过去了,然后进行总结,总结主要是自己缺乏什么。
2,然后思考全面后再来一遍。
3,复习就是做题,当然也可以。。你得找些特殊的方法去解决它。
4,我对于递归的理解。
5,对于这种没有给你说清楚几组数据的题你该怎么做。
while(cin>>x>>y) {}
哈哈挺有意思的。
6,数据里面的坑,所以对待题目,你自己要给自己找坑。
比如有的数据i>j。
我也是呵呵呵了。
7,最后那个big的更新,倒是弄了我挺久的。
这个些都算些什么?
8,不管怎么样,复习后好好思考一遍就上吧。
四,
1,妈的果然不行了。
1 if(!x%2) 2 if(x%2)
2,这个不行的。
3,我哭了
1 if(a>b) 2 { 3 t=a; 4 p=b; 5 } 6 else 7 { 8 p=a; 9 t=b; 10 }
没有else ,我错了!