扭扭数是像下面的数:3748,67,869,32435465768, 它们每个数每位数码的变化是:上升,下降,上升,下降,… 或者:下降,上升,下降,上升,… 而 33, 379, 12123 则不是. 特别规定一位整数也是一个扭扭数。 给定一个数字,请从头开始尽量多地连续取数码,计算最多能取多少个数码,构成扭扭数.
下面是我写的两种不同的代码
1、
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a;
int num=0;
cin>>a;
if(a.size()>1)
{
if(a[1]>a[0])
{
for(int i=1;i<=a.size();i++)
{
if(i%2==0)
{
if(a[i]<a[i-1])
{
num++;
}
else
{
cout<<num;
}
}
else
{
if(a[i]>a[i-1])
{
num++;
}
else
{
cout<<num;
}
}
}
}
if(a[1]<a[0])
{
for(int i=1;i<=a.size();i++)
{
if(i%2==0)
{
if(a[i]>a[i-1])
{
num++;
}
else
{
cout<<num;
}
}
else
{
if(a[i]<a[i-1])
{
num++;
}
else
{
cout<<num;
}
}
}
}
}
else
{
cout<<1;
}
return 0;
}
2、
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a;
int num=1,numa,numb;
cin>>a;
if(a.size()!=1)
{
if(a[0]<a[1])
{
for(int i=2;a[1]<a[i-1];i+=2,numa=i)
for(int i=1;a[i]>a[i-1];i+=2,numb=i)
if(fabs(1.0*numa-1.0*numb)==1)
{
if(numa>numb)
{
cout<<numa;
}
else
{
cout<<numb;
}
}
else
{
if(numa<numb)
{
cout<<numa;
}
else
{
cout<<numb;
}
}
}
if(a[0]>a[1])
{
for(int i=2;a[1]>a[i-1];i+=2,numa=i)
for(int i=1;a[i]<a[i-1];i+=2,numb=i)
if(fabs(1.0*numa-1.0*numb)==1)
{
if(numa>numb)
{
cout<<numa;
}
else
{
cout<<numb;
}
}
else
{
if(numa<numb)
{
cout<<numa;
}
else
{
cout<<numb;
}
}
}
else
{
cout<<1;
}
}
else
{
cout<<1;
}
return 0;
}