连续非递减子序列
描述
一个序列中的元素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个整数,为组成的序列元素。
输出
输出最少分割的连续非递减子序列个数。
样例输入
样例输出
分析:找最少的连续非递减子序列,那么就是最多的递减子序列,所以,从前往后遍历只要递减,便加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; }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步