初级光能
题目描述 Description
酷町猫喜欢在酷町天梯上做题刷分,他整整刷了n天。已知他在第i天得了ai分(1 ≤ i ≤ n;)。酷町猫非常喜欢进步,所以他想知道存储得分的数组ai里最大非递减子数组的长度。数组的子数组就是它的连续片段。如果其中的所有数字都遵循非递减顺序(也就是增加或者不变),则称为非递减的数组。帮酷町猫解决这个难题吧。例如得分数组1 2 2 3 3 3 4 5 4 4 5 5,其中子数组1 2 2 3 3 3 4 5是非递减的,长度为8;而4 4 5 5也是非递减的子数组,长度只有4,所以这个得分数组的最大非递减子数组的长度为8。
输入描述 Input Description
第一行包含整数n(1≤n≤10^5)。
第二行包含n个整数a1,a2,…,an(1≤ai≤10^9)。
输出描述 Output Description
输出一个整数,数组ai的最大非递减子数组的长度。
样例输入 Sample Input
【输入样例1】 6 2 2 1 3 4 1 【输入样例2】 3 2 2 9
样例输出 Sample Output
【输出样例1】 3 【输出样例2】 3
数据范围及提示 Data Size & Hint
在第一个样例中,最大的非递减子段是从第三个元素到第五个元素的数字。
在第二个样例中,最大的非递减子段是从第一个元素到第三个元素的数字。
新手启示者
for(int i=1;i<=n;i++){ cin>>a[i]; } for(int i=1;i<=n;i++){ if(a[i]<=a[i+1]){ cnt++; b[i]=cnt; }else{ cnt=1; b[i]=cnt; } } maxn=b[1]; for(int i=1;i<=n;i++){ maxn=max(maxn,b[i]); } cout<<maxn;
望采纳
汪宇航在2021-02-09 14:18:45追加了内容
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
if(a[i]<=a[i+1]){
cnt++;
b[i]=cnt;
}else{
cnt=1; b[i]=cnt;
}
}
maxn=b[1];
for(int i=1;i<=n;i++){
maxn=max(maxn,b[i]);
}
cout<<maxn;
刚刚打错了,望采纳
中级启示者
经典的最长不下降连续子序列
首先输入数组
开始寻找
循环(i:1~n){
如果(a[i]<=a[i+1]){//可以构成不下降序列
k++;
b[i]=k; //记录最大值
}
else{
k=1;
b[i]=k;
}
}
之后开始寻找最大值
定义maxn,赋值为b[1]
for(int i=1;i<=n;i++){
如果b[i]比maxn大 把maxn赋为b[i]
}