dp板子题20分求助

B3637 最长上升子序列

jiangmuran @ 2023-08-07 13:18:02

RT,

#include <iostream>

using namespace std;

int main()
{
    long long n;
    cin >> n;
    long long a[10005],f[10005]={};

    for (int i=0;i < n ;i++)
    {
        cin >>a[i];;;;;;;;
        f[i]=1;
    }
    f[n]=f[n+1]=1;
    f[0]=1;
    for (int i=0;i<=n ;i++)
    {

        for (int j=i-1;j>=0;j--)
        {
            //cout << i << ' ' << j << " " << f[i] <<endl;
            f[i]=max(f[i],f[j]);
            if (a[j]<=a[i])
            {

                f[i]=max(f[i],f[j]+1);
                //cout << i << ' ' << f[j+1] << endl;
            }

        }
    }
    cout << f[n] << endl;
}

by liaoyichen @ 2023-08-07 13:25:50

@ben_ren_yi_tui_gu

<= 换成 <


by SakurajiamaMai @ 2023-08-07 13:35:46

=不算上升,把<=换成<


by jiangmuran @ 2023-08-07 13:56:07

@liaoyichen @SakurajiamaMai

换过了,还是不行,因为我是在其他平台上做的,题目是最长不下降子序列。 但无论是改还是不改,在luogu和另一个平台都只能拿20分


by liaoyichen @ 2023-08-07 13:59:01

@SakurajiamaMai 为什么要循环到 n

你的代码给我的感觉就是拼在一起

又想从 0 开始又想从 1 开始


by jiangmuran @ 2023-08-07 15:33:20

@liaoyichen 我发现只有到n才能拿到20分


|