这题咋dp啊
#include<bits/stdc++.h>
using namespace std;
int main() {int a;cin>>a;vector<int>s(a,0);vector<int>dp(a);dp[0]=1;
// s.push_back(1);for(int i=0;i<a;i++){
// cout<<s[i];cin>>s[i];}for(int i=1;i<a;i++){if(s[i-1]+1==s[i]){
// if(i==1)dp[i]=2;
// else if(s[i-1]-1==s[i-2])dp[i]=dp[i-1]+1;
// else dp[i]=max()}else if(i==1)dp[i]=1;elsedp[i]=max(dp[i-1],dp[i-1-dp[i-1]]);}for(int i=0;i<a;i++)cout<<dp[i]<<" ";
// int sum=1;
// for(int i=1;i<a;i++){
// if(s[i]==s[i-1]+1){
// int z=2;
// for(int j=i+1;j<a;j++){
// if(s[j]==s[j-1]+1)z++;
// else break;
// }
// if(z>sum)sum=z;
// }
// }
// cout<<sum;return 0;
}
d着d着不会了...
比较简单但是耗时更多的解法:
#include<bits/stdc++.h>
using namespace std;
int main() {int a;cin>>a;vector<int>s(a,0);
// s.push_back(1);for(int i=0;i<a;i++){
// cout<<s[i];cin>>s[i];}int sum=1;for(int i=1;i<a;i++){if(s[i]==s[i-1]+1){int z=2;for(int j=i+1;j<a;j++){if(s[j]==s[j-1]+1)z++;else break;}if(z>sum)sum=z;}}cout<<sum;return 0;
}