BNUOJ 4215 最长公共连续子序列

最长公共连续子序列

Time Limit: 1000ms

Memory Limit: 65536KB

64-bit integer IO format: %lld      Java class name: Main

给你两个序列S1和S2,长度分别是L1,L2 (1 <= L1 , L2 <= 180).

写一个程序找出最长的连续公共子序列。

连续子序列定义为序列中连续的一个片段。例如序列"1 2 3"的子串有空串,"1","2","3","1 2","2 3","1 2 3"。

Input

第1行:两个整数L1,L2,以一个空格隔开。

第2行到第L1+1行:每行一个整数,第i+1行给出S1中的第i个数。

第L1+2行到第L1+L2+1行:每行一个整数,第L1+i+1行给出S1中的第i个数。

Output

一个整数,给出S1和S2的最长连续子序列的长度

Sample Input

10 12
1
1
1
3
2
3
3
3
4
5
1
1
1
1
3
2
3
3
4
4
5
-8

Sample Output

7

Source

第八届北京师范大学程序设计竞赛热身赛第四场

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <cstdlib>
 5 #include <vector>
 6 #include <climits>
 7 #include <algorithm>
 8 #include <cmath>
 9 #define LL long long
10 using namespace std;
11 int a[200],b[200],dp[200][200];
12 int main(){
13     int n,m,i,j,ans;
14     while(~scanf("%d %d",&n,&m)){
15        for(i = 1; i <= n; i++)
16             scanf("%d",a+i);
17         for(j = 1; j <= m; j++)
18             scanf("%d",b+j);
19         memset(dp,0,sizeof(dp));
20         for(ans = 0,i = 1; i <= n; i++){
21             for(j = 1; j <= m; j++){
22                 if(a[i] == b[j]){
23                     dp[i][j] = dp[i-1][j-1]+1;
24                 }
25                 if(dp[i][j] > ans) ans = dp[i][j];
26             }
27         }
28         printf("%d\n",ans);
29     }
30     return 0;
31 }

BNUOJ 4215 最长公共连续子序列

时间: 2024-12-29 11:41:14

BNUOJ 4215 最长公共连续子序列的相关文章

[codevs2185]最长公共上升子序列

试题描述 熊大妈的奶牛在小沐沐的熏陶下开始研究信息题目.小沐沐先让奶牛研究了最长上升子序列,再让他们研究了最长公共子序列,现在又让他们要研究最长公共上升子序列了.小沐沐说,对于两个串A,B,如果它们都包含一段位置不一定连续的数字,且数字是严格递增的,那么称这一段数字是两个串的公共上升子串,而所有的公共上升子串中最长的就是最长公共上升子串了.奶牛半懂不懂,小沐沐要你来告诉奶牛什么是最长公共上升子串.不过,只要告诉奶牛它的长度就可以了. 输入 第一行N,表示A,B的长度.第二行,串A.第三行,串B.

最长公共上升子序列(codevs 2185)

题目描述 Description 熊大妈的奶牛在小沐沐的熏陶下开始研究信息题目.小沐沐先让奶牛研究了最长上升子序列,再让他们研究了最长公共子序列,现在又让他们要研究最长公共上升子序列了. 小沐沐说,对于两个串A,B,如果它们都包含一段位置不一定连续的数字,且数字是严格递增的,那么称这一段数字是两个串的公共上升子串,而所有的公共上升子串中最长的就是最长公共上升子串了. 奶牛半懂不懂,小沐沐要你来告诉奶牛什么是最长公共上升子串.不过,只要告诉奶牛它的长度就可以了. 输入描述 Input Descri

BSOJ1004 -- 【TYVJ1071】LCIS最长公共上升子序列

Description 熊大妈的奶牛在小沐沐的熏陶下开始研究信息题目.小沐沐先让奶牛研究了最长上升子序列,再让他们研究了最长公共子序列,现在又让他们要研究最长公共上升子序列了. 小沐沐说,对于两个串A,B,如果它们都包含一段位置不一定连续的数字,且数字是严格递增的,那么称这一段数字是两个串的公共上升子串,而所有的公共上升子串中最长的就是最长公共上升子串了. 奶牛半懂不懂,小沐沐要你来告诉奶牛什么是最长公共上升子串.不过,只要告诉奶牛它的长度就可以了. Input 第一行N,表示A,B的长度. 第

acwing 272. 最长公共上升子序列

题面: 熊大妈的奶牛在小沐沐的熏陶下开始研究信息题目. 小沐沐先让奶牛研究了最长上升子序列,再让他们研究了最长公共子序列,现在又让他们研究最长公共上升子序列了. 小沐沐说,对于两个数列A和B,如果它们都包含一段位置不一定连续的数,且数值是严格递增的,那么称这一段数是两个数列的公共上升子序列,而所有的公共上升子序列中最长的就是最长公共上升子序列了. 奶牛半懂不懂,小沐沐要你来告诉奶牛什么是最长公共上升子序列. 不过,只要告诉奶牛它的长度就可以了. 数列A和B的长度均不超过3000. 输入格式 第一

最长上升连续子序列 Linkcode

问题: 给定一个整数数组(下标从 0 到 n-1, n 表示整个数组的规模),请找出该数组中的最长上升连续子序列.(最长上升连续子序列可以定义为从右到左或从左到右的序列.) 样例 给定 [5, 4, 2, 1, 3], 其最长上升连续子序列(LICS)为 [5, 4, 2, 1], 返回 4. 给定 [5, 1, 2, 3, 4], 其最长上升连续子序列(LICS)为 [1, 2, 3, 4], 返回 4. 给定 [1, 1, 1, 1, 1], 其最长上升连续子序列(LICS)为 [1], 返

lintcode 最长上升连续子序列 II(二维最长上升连续序列)

题目链接:http://www.lintcode.com/zh-cn/problem/longest-increasing-continuous-subsequence-ii/ 最长上升连续子序列 II 给定一个整数矩阵(其中,有 n 行, m 列),请找出矩阵中的最长上升连续子序列.(最长上升连续子序列可从任意行或任意列开始,向上/下/左/右任意方向移动). 样例 给定一个矩阵 [ [1 ,2 ,3 ,4 ,5], [16,17,24,23,6], [15,18,25,22,7], [14,1

POJ 2127 最长公共上升子序列

动态规划法: #include <iostream> #include <cstdio> #include <fstream> #include <algorithm> #include <cmath> #include <deque> #include <vector> #include <queue> #include <string> #include <cstring> #inc

最长公共上升子序列(LCIS)ZOJ 2432

立方算法: #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #define M 505 using namespace std; typedef long long LL; LL a[M],b[M]; int dp[M][M]; int main() { //freopen("in.txt","r",stdin); in

lintcode 容易题:Longest Increasing Continuous subsequence 最长上升连续子序列

题目: 最长上升连续子序列 给定一个整数数组(下标从 0 到 n-1, n 表示整个数组的规模),请找出该数组中的最长上升连续子序列.(最长上升连续子序列可以定义为从右到左或从左到右的序列.) 样例 给定 [5, 4, 2, 1, 3], 其最长上升连续子序列(LICS)为 [5, 4, 2, 1], 返回 4. 给定 [5, 1, 2, 3, 4], 其最长上升连续子序列(LICS)为 [1, 2, 3, 4], 返回 4. 解题: 这个直接找就可以了,最长的升序,和最长的降序,再求最大值,时