https://ac.nowcoder.com/acm/problem/13134
动态规划
概述:
给出数组,求出最长的递增序列(可以是删除其中一个数字的序列),输出递增序列的长度
#include<cstdio> int main(){ int b,c,d,e,m,n,i; scanf("%d",&n); int a[n]; for(i=0;i<n;i++){ scanf("%d",&a[i]); } m=1; for(i=0;i<n-1;i++){ d=c=1; for(b=i;b<n-1;b++){ if(a[b+1]>a[b]){ c++; if(b==n-2){//就已经是结束了,因为m=c设置在循环内部,如果不这样,最长序列达到末尾的情况无法考虑在内 if(c>m) m=c; } }else if(d==1){ c++; d=0; if(!((a[b-1]<a[b]&&a[b]<a[b+2])||(a[b-1]<a[b+1]&&a[b+1]<a[b+2]))){
//注意,这里是指,删除这个数字后,即跳过这个数字进行大小比较 if(c>m){ m=c; } break; } }else { if(c>m){ m=c; } break; } } } printf("%d",m); }
标签:数列,牛牛,c++,else,break,int,序列 From: https://www.cnblogs.com/killjoyskr/p/16795765.html