PAT1045(动态规划)

  • Post author:
  • Post category:其他




1,题目


点这里。。。



2,代码

#include<stdio.h>
#include<string.h>
int N;
int M,favorite_colors[300];
int L,given_stripe[10010];
int maxLength=0,dp[10010];
int main(){
    memset(dp,0,sizeof(dp));
    scanf("%d",&N);
    scanf("%d",&M);
    for(int i=1;i<=M;++i) scanf("%d",&favorite_colors[i]);
    scanf("%d",&L);
    for(int i=1;i<=L;++i) scanf("%d",&given_stripe[i]);
    for(int i=1;i<=L;++i){
        if(given_stripe[i]==favorite_colors[1]) dp[i]=dp[i-1]+1;
        else dp[i]=dp[i-1];
    }
    for(int i=2;i<=M;++i){
        for(int j=i;j<=L;++j){
            if(given_stripe[j]==favorite_colors[i]) {
                int mal=-1;
                for(int k=i;k<j;++k){
                    if(mal<dp[k]) mal=dp[k];
                }
                dp[j]=mal+1;
            }
        }
    }
    for(int i=1;i<=L;++i){
        if(dp[i]>maxLength) maxLength=dp[i];
    }
    printf("%d",maxLength);
    return 0;
}



版权声明:本文为qq_29006825原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。