最简解

  1. #include<stdio.h>
  2. int main(){
  3. int lenth,temp,in,ans=1,maxans;
  4. scanf("%d",&lenth);
  5. scanf("%d",&temp);//输入第一个数
  6. for(int i=2;i<=lenth;i++){//循环输入n-1次
  7. scanf("%d",&in);
  8. if(in>temp&&in-temp==1) ans++;//后比前大且仅1 ans+1
  9. else ans=1;//否则归1
  10. if(ans>maxans){//获取最大结果
  11. maxans=ans;
  12. }
  13. temp=in;//交换数据,保留新数据
  14. }
  15. printf("%d",maxans);
  16. }

引出DP,动态规划解

  1. #include<iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. int n;
  6. cin>>n;
  7. int a[n+1],dp[n+1];
  8. for(int i=1;i<=n;i++)
  9. {
  10. cin>>a[i];
  11. }
  12. int maxn=0;
  13. for(int i=n;i>0;i--)
  14. {
  15. if(i==n)
  16. {
  17. dp[i]=1;
  18. }
  19. else
  20. {
  21. if(a[i+1]-1==a[i])
  22. {
  23. dp[i]=dp[i+1]+1;
  24. }
  25. else
  26. {
  27. dp[i]=1;
  28. }
  29. }
  30. maxn=max(dp[i],maxn);
  31. }
  32. cout<<maxn;
  33. return 0;
  34. }

详见DP章节