问题标题: 酷町堂:5098

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(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 mxz=-1;
    cin>>n>>d;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    for(int i=1;i<=n;i++)
        mxz=max(mxz,dfs(i));
    cout<<mxz;
    return 0;
}

60分


0
已采纳
徐子玄
徐子玄
初级光能
初级光能

看这个

徐子玄在2020-07-12 15:45:46追加了内容

数组大小没问题,主要是这句:if(a[j]/a[i]==d)
a[j]和a[i]都是整数,会自动把余数去掉,就不丢了

改成这个:if(a[j]==d*a[i])

望采纳

0
我要回答