早教吧 育儿知识 作业答案 考试题库 百科 知识分享

一道编程题C++输入一串相邻元素均不相等的自然数数列(以0结尾表示结束且0不是该数列的元素),分别求出所有的递增和递减子序列的总数目.如数列7,2,6,9,8,3,5,2,1可分为(7,2),(2,6,9),(9,8

题目详情
一道编程题C++
输入一串相邻元素均不相等的自然数数列(以0结尾表示结束且0不是该数列的元素),分别求出所有的递增和递减子序列的总数目.如数列7,2,6,9,8,3,5,2,1可分为(7,2),(2,6,9),(9,8,3),(3,5),(5,2,1)五个子序列,称2,9,3,5为转换元素,递增子序列与递减子序列的个数分别为2和3.
Input
输入一组数据,独占一行,并包含一串元素个数为M(1≤M≤50)的自然数数列和0,0表示该行输入结束.
Output
输出相应的递增子序列与递减子序列的个数,中间分隔符为空格(独占一行).
Sample Input
7 2 6 9 8 3 5 2 1 0
Sample Output
2 3
▼优质解答
答案和解析
【题意】
输入:一串相邻元素均不相等的自然数数列(以0结尾表示结束且0不是该数列的元素),分别求出所有的递增和递减子序列的总数目.
输出:相应的递增子序列与递减子序列的个数,中间分隔符为空格(独占一行).
【参考代码】
#include
#include
void main(){
char a[100];
scanf("%s",a);
int up=0,down=0,walk=0;
//up 递增子序列个数;down递减子序列个数;walk 序列走向 >0递增,0)
up +=1;
else down +=1;
for (int i=2;a[i]!='0';i++)
{
if (walk*(a[i]-a[i-1])0)
up +=1;
else down +=1;
}
}
printf("%d %d\n",up,down);
}