救救,记搜一个点wa了

B3637 最长上升子序列

LagSuc @ 2024-09-06 14:43:40

#include<bits/stdc++.h>

using namespace std;

const int N = 10010;
int a[N];
int n;
int mem[N][N];

int dfs(int x, int pre){
    if(mem[x][pre]) return mem[x][pre];
    if(x > n) return 0;
    if(a[x] > pre) return mem[x][pre] = max(dfs(x+1, pre), dfs(x+1, a[x]) + 1);
    else return mem[x][pre] = dfs(x+1, pre);
}

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

    }

    printf("%d", dfs(1, 0));
}

by LagSuc @ 2024-09-11 19:31:48

呜呜呜,没有人回复我,不过我已经知道原因了,我这里的mem数组没优化好,但也不知道该怎么优化了,老老实实用dp了


|