最简解
#include<stdio.h>int main(){int lenth,temp,in,ans=1,maxans;scanf("%d",&lenth);scanf("%d",&temp);//输入第一个数for(int i=2;i<=lenth;i++){//循环输入n-1次scanf("%d",&in);if(in>temp&&in-temp==1) ans++;//后比前大且仅1 ans+1else ans=1;//否则归1if(ans>maxans){//获取最大结果maxans=ans;}temp=in;//交换数据,保留新数据}printf("%d",maxans);}
引出DP,动态规划解
#include<iostream>using namespace std;int main(){int n;cin>>n;int a[n+1],dp[n+1];for(int i=1;i<=n;i++){cin>>a[i];}int maxn=0;for(int i=n;i>0;i--){if(i==n){dp[i]=1;}else{if(a[i+1]-1==a[i]){dp[i]=dp[i+1]+1;}else{dp[i]=1;}}maxn=max(dp[i],maxn);}cout<<maxn;return 0;}
详见DP章节
