输入一串元素均不相等的自然数数列(以0结尾表示结束且0不是该数列的元素),分别求出所有的递增和递减子序列的总数目。如数列7,2,6,9,3,8,5,2,1可分为(7,2),(2,6,9),(9,8,3),(3,5),(5,2,1)五个子序列,称2,9,3,5为转换元素,递增子序列与递减子序列的个数分别为2和3。
#include<iostream>
using namespace std;
int main()
{
int array[50],num,i=0,j,k=0;
for(int t=0;t<2;t++){
while(cin>>num)
{
if(num==0) break;
array[i++]=num;
}
int array2[50]={NULL};
for(j=0;j<i-1;j++)
if(array[j]>array[j+1]) array2[k++]=2;
else array2[k++]=1;
int ht=0;
for(j=0;j<k-1;j++)
if(array2[j]!=array2[j+1]) ht++;
if(ht==0)
{ ht=1;
if(array[0]=1) cout<<0<<" "<<1<<endl;
else cout<<1<<' '<<0<<endl;
return 1;
}
if((ht+1)%2==0) cout<<((ht+1)/2)<<" "<<((ht+1)/2)<<endl;
else
if(array[0]==1) cout<<(ht+2)/2<<" "<<ht/2<<endl;
else cout<<ht/2<<" "<<(ht+2)/2<<endl;
}
}
可能有问题