码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 1423(LCS+LIS)

时间:2016-04-20 23:33:02      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:

 

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1423

好坑啊。。还有公共串为0时的特殊判断,还有格式错误。。看Discuss看知道除了最后一组测试数据之外都需要空行。。

其余的会LCS打印路径就行了。

///公共最长上升子序列
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <algorithm>
#define N 505
using namespace std;

int dp[N][N],flag[N][N];
int dp1[N];
int a[N],b[N],c[N];
int n,m,k;

void solve_c(int i,int j){
    if(i==0||j==0) return;
    if(flag[i][j]==0){
        solve_c(i-1,j-1);
        c[++k] = a[i];
    }else if(flag[i][j]==1){
        solve_c(i-1,j);
    }else solve_c(i,j-1);
}
void LCS(){
    memset(flag,0,sizeof(flag));
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(a[i]==b[j]){
                dp[i][j] = dp[i-1][j-1]+1;
                flag[i][j]=0;
            }else{
                if(dp[i-1][j]>dp[i][j-1]) flag[i][j]=1;
                else flag[i][j]=-1;
                dp[i][j] = max(dp[i-1][j],dp[i][j-1]);
            }
        }
    }
    //printf("%d",dp[n][m]);
    k = 0;
    solve_c(n,m);
    //for(int i=1;i<=k;i++) printf("%d ",c[i]);
}
void LIS(){
    dp1[1] = 1;
    int mx = 1;
    for(int i=2;i<=k;i++){
        dp1[i]=1;
        for(int j=1;j<i;j++){
            if(c[i]>c[j]&&dp1[i]<dp1[j]+1){
                dp1[i] = dp1[j]+1;
            }
            if(mx<dp1[i]) mx=dp1[i];
        }
    }
    if(k==0) mx = 0;
    printf("%d\n",mx);
}
int main()
{
    int tcase;
    scanf("%d",&tcase);
    while(tcase--){
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            scanf("%d",&a[i]);
        }
        scanf("%d",&m);
        for(int i=1;i<=m;i++){
            scanf("%d",&b[i]);
        }
        memset(dp,0,sizeof(dp));
        LCS();
        LIS();
        if(tcase) printf("\n");
    }
    return 0;
}

 

hdu 1423(LCS+LIS)

标签:

原文地址:http://www.cnblogs.com/liyinggang/p/5414884.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!