问题标题: 酷町堂:5097 等差子序列 (^-^)V

0
0
已解决
刘乐宸
刘乐宸
新手天翼
新手天翼
#include<iostream>
#include<cstring>
#include<cmath>
#include<string>
#include<cstdio>
using namespace std;
int a[40005],f[40005],d,n,x;
int dfs(int i){
    if(f[i]!=-1) return f[i];
    int mx=-1;
    for(int j=1;j<=i-1;j++){
        if(x==0){
            if(a[i]-a[j]==d){
                x=1;
                mx=max(mx,dfs(j));
            }
            if(a[j]-a[i]==d){
                x=2;
                mx=max(mx,dfs(j));
            }
        }
        else if(x==1&&a[i]-a[j]==d)
            mx=max(mx,dfs(j));
        else if(x==2&&a[j]-a[i]==d)
            mx=max(mx,dfs(j));

    }
    if(mx==-1){
        f[i]=1;
        return 1;
    }
    else{
        f[i]=mx+1;
        return mx+1;
    }
}
int main()
{
    memset(f,-1,sizeof(f));
    int mx1=-1;
    cin>>n>>d;
    for(int i=1;i<=n;i++){
        cin>>a[i];    
    }

    for(int i=1;i<=n;i++){
        mx1=max(mx1,dfs(i));        
    }

    cout<<mx1;
    return 0;
}

没错,是我


0
0
邓涵睿
邓涵睿
中级天翼
中级天翼

抄答案啊......这不厚道啊,你要是学过的话,才给思路

0
董宇昊
董宇昊
初级启示者
初级启示者

他的确学过!

我第一次上问答的时候,他就被禁言了

【滑稽】+【国服狙击手保命】

我要回答