WA了5个点,求助,谢谢

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
int n;
int dp[504];
int a[504];
int b[504];
int p[504];
int a1,b1;
int ans,t;
void init(){
    scanf("%d",&a1);
    for(int i=1;i<=a1;i++)
        scanf("%d",&a[i]);
    scanf("%d",&b1);
    for(int i=1;i<=b1;i++)
        scanf("%d",&b[i]);
    return ;
}
void work(){
    ans=0;
    memset(p,0,sizeof(p));
    memset(dp,0,sizeof(dp));
    for(int i=1;i<=a1;i++){
        t=0;
        for(int j=1;j<=b1;j++){
            if(a[i]==b[j]){
                for(int k=i-1;k>0;k--){
                    if(a[k]<a[i] && p[k] && p[k]<j){
                        dp[i]=max(dp[i],dp[k]+1);
                    }
                }
                if(dp[i]==0) dp[i]=1;
                if(dp[i]>t){
                    t=dp[i];
                    p[i]=j;
                }
            }
        }
        ans=max(ans,dp[i]);
    }
    printf("%d\n",ans);
    return ;
}
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        init();
        work();
    }
}

0 条评论

目前还没有评论...

信息

ID
1264
难度
7
分类
动态规划 | LCS动态规划 | LIS 点击显示
标签
递交数
3412
已通过
626
通过率
18%
被复制
5
上传者