描述
一个序列中的元素a1,a2,...,an,若满足a1<=a2<=...<=an,则称该序列为非递减序列。
现给定一个序列,问该序列最少可以分割为多少个连续的非递减子序列。
比如:
1 2 5 3 4
可以分割为两个非递减子序列1 2 5和3 4。
而:
5 4 3 2 1
则只能分割为5个非递减子序列,每个子序列长度均为1。
输入
输入第一行为正整数n(n<=100),
第二行有n个整数,为组成的序列元素。
输出
输出最少分割的连续非递减子序列个数。
样例输入
5 1 2 5 3 4
样例输出
2
分析:找最少的连续非递减子序列,那么就是最多的递减子序列,所以,从前往后遍历只要递减,便加1,至少有一个
代码如下:
#include <iostream> using namespace std; int a[101]; int main() { int n,m=1,j,i; cin>>n; for(i=0;i<n;i++) { cin>>a[i]; } for(i=1;i<n;i++) { if(a[i]<a[i-1]) { m++; } } cout<<m<<endl; }