针对这个ACM的题
http://acm.uva.es/p/v1/100.html
编写如下代码:
#include<string>
#include<iostream>
#include<map>
#include<algorithm>
using namespace std;
int CycleLength(int i,int j)
{
//cin>>i;
//cin>>j;
int CycleLength = 0;
map<int, int> Cycle;
map<int, int>::iterator iter;
//input
for(int n = i; n <= j; n++)
{
int LengthCount = 0;
while(1!=n)
{
if(0 == n%2)
{
n /= 2;
LengthCount++;
}
else if(1 == n%2)
{
n = 3*n +1;
LengthCount++;
}
}
LengthCount++;
Cycle[n] = LengthCount;
}
//output
iter = Cycle.begin();
CycleLength = iter -> second;
for(; iter != Cycle.end(); iter++)
{
if(CycleLength< iter -> second)
{
CycleLength = iter -> second;
}
}
cout<<i<<" "<<j<<" "<<CycleLength<<endl;
return 1;
}
int main()
{
CycleLength(1,10);
return 1;
}
在linux下运行,编译通过了,可是运行之后一直没有输出,还有感觉求最大值可以用algorithm里的函数,可是不知道怎么用,希望会的人可以优化一下哦!