最长上升连续子序列

 1 #define INF 100099
 2 int n,m,a[99999],s[99999],ans;
 3 void    dfs(int x,int y)
 4 {
 5     if(x==n+1)    return;
 6     else{
 7         if(a[x-1]<a[x])    s[x]=s[x-1]+1,dfs(x+1,s[x]);
 8         else    s[x]=1,dfs(x+1,s[x]);        
 9     }
10     return ;
11 } 
12 int main()
13 {
14     scanf("%d",&n);
15     for(int i=1;i<=n;i++)
16         scanf("%d",&a[i]);
17     dfs(1,0) ;
18     for(int i=1;i<=n;i++)
19         ans=max(ans,s[i]);
20     cout<<ans;
21     return 0;
22 }
23 
24 //更快的的算法
25  #define INF 100099
26 int n,m,a[99999],s[99999],ans;
27 int main()
28 {
29     scanf("%d",&n);
30     for(int i=1;i<=n;i++)
31         scanf("%d",&a[i]);
32     for(int i=1;i<=n;i++)
33         if(a[i-1]<a[i])    s[i]=s[i-1]+1;
34         else    s[i]=1; 
35     for(int i=1;i<=n;i++)
36         ans=max(ans,s[i]);
37     cout<<ans;
38     return 0;
39 }
原文地址:https://www.cnblogs.com/CLGYPYJ/p/6363966.html