0
已解决
高杨
资深守护
资深守护
30分,谁能帮我看看
#include<bits/stdc++.h>
#include<iostream>
#include <cstring>
using namespace std;
int a[100005],f[100005],d;
int dfs(int p)
{
if(f[p]!=-1) return f[p];
int ans=-1;
for(int i=1;i<p;i++)
{
if((a[p]/a[i]==d&&a[p]%2==0&&a[i]%2==0)||a[i]==1)
{
ans=max(dfs(i),ans);
}
}
if(ans!=-1)
{
f[p]=ans+1;
return f[p];
}
else
{
f[p]=1;
return f[p];
}
}
int main()
{
memset(f,-1,sizeof(f));
int n,t;
cin>>n>>d;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
int mx=-1;
for(int i=1;i<=n;i++)
{
mx=max(mx,dfs(i));
}
cout<<mx;
return 0;
}