C语言求助

B3637 最长上升子序列

dove_whispers @ 2023-03-27 18:31:11

只过了两个点,主打一个不理解,也做不出反例

#include <stdio.h>
int max(int a,int b){
    return a>b?a:b;
}
int main() {
    int n,a[5005],dp[5005];
    scanf("%d",&n);
    for(int i=0;i<n;i++)
        scanf("%d",&a[i]);
    for(int i=0;i<n;i++)
        dp[i] = 1;
    for(int i=1;i<n;i++)
        for(int j=0;j<i;j++)
            if(a[i]>a[j])
                dp[i]=max(dp[i],dp[j]+1);
    printf("%d\n",dp[n-1]);
    return 0;
}

by 幻想繁星 @ 2023-03-27 18:38:58

@dove_whispers 最长上升子序列不一定会选最后一个数。 hack如下:

5
1 2 3 4 1


by dove_whispers @ 2023-03-27 19:17:47

@_1412_kid Thanks♪(・ω・)ノ


|