有错吗?

B3637 最长上升子序列

zifan2 @ 2023-08-18 11:12:13

这道题自认为做的没问题

我的错误代码:

#include <math.h>
#include <stdio.h>
#include <iostream>
#include <bits/stdc++.h>
#define lr long long int
using namespace std;

lr ls[5000],ll[5000]; lr n,maxx = 0;
int main()
{
    cin >> n;
    for(int i = 0 ; i < n ; i++) cin >> ls[i];
    ll[0] = 1;
    for(int i = 0 ; i < n ; i++)
    {
        if(!i) continue;
        maxx = 0;
        for(int j = 0 ; j < i ; j++) if(ls[j] < ls[i]) maxx = max(maxx,ll[j]);
        ll[i] = maxx + 1;
    }
    sort(ll,ll + n);
    cout << ll[n];
    return 0;
}

请问各位大神,我哪里错了?


by zifan2 @ 2023-08-18 11:14:04

全WA了


by Rosaya @ 2023-08-18 11:21:36

你的数组不是 0 \sim n-1 吗,为什么 ll[n] 会有值。

下次请先自行测试样例。


by zifan2 @ 2023-08-18 11:22:47

额,写错


by robertuu @ 2023-08-18 11:23:18

#include <math.h>
#include <stdio.h>
#include <iostream>
#include <bits/stdc++.h>
#define lr long long int
using namespace std;

lr ls[5000],ll[5000]; lr n,maxx = 0;
int main()
{
    cin >> n;
    for(int i = 0 ; i < n ; i++) cin >> ls[i];
    ll[0] = 1;
    for(int i = 0 ; i < n ; i++)
    {
        if(!i) continue;
        maxx = 0;
        for(int j = 0 ; j < i ; j++) if(ls[j] < ls[i]) maxx = max(maxx,ll[j]);
        ll[i] = maxx + 1;
    }
    sort(ll,ll + n);
    cout << ll[n-1]; // 看这里,要-1
    return 0;
}

by zifan2 @ 2023-08-18 11:23:22

谢谢


|