你这个代码i是在枚举最长天数的左端点,j枚举右端点,其实没必要。
理由:
考虑一个连续天数:
XXXXXXX
发现当i=1,j=7时最长。
这之后,当左端点成为i=2时,j=7最长,但总长度比答案少了1,左端点i=3是。总长度比答案少了2......
也就是说,在已知了一段连续天数时,左端点在这段连续天数之中对答案没有任何贡献,如:
XXX00XXXX
当i=2,3时远没有i=1时答案大,当i=7,8,9,10时远没有i=6时大,就是说,没有必要搜已知连续天数。
```cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int l[n+2];
for(int i=1;i<=n;i++)
cin>>l[i];
int ans=1,maxx=-1;
for(int i=2;i<=n;i++){
if(l[i]>l[i-1])ans++;
else ans=1;
maxx=max(maxx,ans);
}
cout<<maxx;
return 0;
}
by Chengjintian @ 2023-11-25 15:46:52
@[Chengjintian](/user/926432)
```cpp
#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int d,len=1,ta=0,ans=0;
cin>>d;
int t[d+2];
for(int i=1;i<=d;i++) cin>>t[i];
for(int i=1;i<d+2;i++){
if(t[i]>t[i-1]){
len++;
}
if(t[i]<=t[i-1]){
ta=len;
if(ta>ans) ans=ta;
len=1;
}
}
cout<<ans;
return 0;
}
```
谢谢你!(求互关)
by JeremyXie @ 2023-11-25 16:06:46
@[JeremyXie](/user/1127401) 加油
by Chengjintian @ 2023-11-25 16:08:11