HDOJ 1423 Greatest Common Increasing Subsequence -- 动态规划
2014-02-28 13:55
375 查看
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1423
[align=left]Problem Description[/align]
This is a problem from ZOJ 2432.To make it easyer,you just need output the length of the subsequence.
[align=left]Input[/align]
Each sequence is described with M - its length (1 <= M <= 500) and M integer numbers Ai (-2^31 <= Ai < 2^31) - the sequence itself.
[align=left]Output[/align]
output print L - the length of the greatest common increasing subsequence of both sequences.
[align=left]Sample Input[/align]
1
5
1 4 2 5 -12
4
-12 1 2 4
[align=left]Sample Output[/align]
2
题目大意是给定两个数字串seq1、seq2,求出它们最长公共递增子序列的长度。
状态dp[j]表示seq1中从1到n与seq2中从1到j并以seq2[j]为结尾的最长公共上升子序列的长度。
状态转移方程:dp[j] = dp[k] + 1, if seq1[i] = seq2[j], 1 <= k < j.
[align=left]Problem Description[/align]
This is a problem from ZOJ 2432.To make it easyer,you just need output the length of the subsequence.
[align=left]Input[/align]
Each sequence is described with M - its length (1 <= M <= 500) and M integer numbers Ai (-2^31 <= Ai < 2^31) - the sequence itself.
[align=left]Output[/align]
output print L - the length of the greatest common increasing subsequence of both sequences.
[align=left]Sample Input[/align]
1
5
1 4 2 5 -12
4
-12 1 2 4
[align=left]Sample Output[/align]
2
题目大意是给定两个数字串seq1、seq2,求出它们最长公共递增子序列的长度。
状态dp[j]表示seq1中从1到n与seq2中从1到j并以seq2[j]为结尾的最长公共上升子序列的长度。
状态转移方程:dp[j] = dp[k] + 1, if seq1[i] = seq2[j], 1 <= k < j.
#include <stdio.h> #include <string.h> #define MAX 501 int T; int seq1[MAX], seq2[MAX]; int len1, len2; int dp[MAX]; int LCIS(){ int i, j; int Max; memset(dp, 0, sizeof(dp)); for (i = 1; i <= len1; ++i){ Max = 0; for (j = 1; j <= len2; ++j){ if (seq1[i] > seq2[j] && Max < dp[j]) Max = dp[j]; if (seq1[i] == seq2[j]) dp[j] = Max + 1; } } Max = 0; for (i = 1; i <= len2; ++i){ if (Max < dp[i]) Max = dp[i]; } return Max; } int main(void){ int i; scanf("%d", &T); while (T-- != 0){ scanf("%d", &len1); for (i = 1; i <= len1; ++i) scanf("%d", &seq1[i]); scanf("%d", &len2); for (i = 1; i <= len2; ++i) scanf("%d", &seq2[i]); printf("%d\n", LCIS()); if (T) putchar('\n'); } return 0; }
相关文章推荐
- HDOJ 1423 Greatest Common Increasing Subsequence -- 动态规划
- hdoj problem 1423 Greatest Common Increasing Subsequence (动态规划)
- HDOJ 题目1423 Greatest Common Increasing Subsequence(LICS)
- HDOJ 1423 Greatest Common Increasing Subsequence 【DP】【最长公共上升子序列】
- HDU 1423 Greatest Common Increasing Subsequence ——动态规划
- 【HDOJ】1423 Greatest Common Increasing Subsequence
- zoj 2432 && hdoj 1423 Greatest Common Increasing Subsequence 【打印LCIS】
- hdoj 1423 Greatest Common Increasing Subsequence(最长上升公共子序列)
- HDU 1423 Greatest Common Increasing Subsequence(LICS入门,只要求出最长数)
- HDU 1423 Greatest Common Increasing Subsequence(最长公共子序列+最长不下降子序列)
- hdu 1423 greatest common increasing subsequence
- HDU 1423 Greatest Common Increasing Subsequence(LCIS)
- hdu 1423 Greatest Common Increasing Subsequence
- hdu 1423 Greatest Common Increasing Subsequence
- HDU 1423 Greatest Common Increasing Subsequence
- HDU 1423 —— Greatest Common Increasing Subsequence
- HDUOJ ---1423 Greatest Common Increasing Subsequence(LCS)
- 【HDU 1423】Greatest Common Increasing Subsequence【LCIS 裸题】
- HDU 1423 Greatest Common Increasing Subsequence LCIS
- hdu 1423 Greatest Common Increasing Subsequence