最长上升连续子序列

 

 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值