hdu 1423(最长公共递增子序列)
来源:互联网 发布:安卓数据库 编辑:程序博客网 时间:2024/05/29 03:09
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1423
思路:dp[i][j]表示序列1(1-i)和序列2(1-j)最长的公共子序列
View Code
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 const int MAXN=550; 7 int dp[MAXN][MAXN]; 8 int num1[MAXN]; 9 int num2[MAXN];10 int n1,n2;11 //dp[i][j]表示num1[]从1-i,num2[]1-j的最长公共子序列12 13 14 int main(){15 int _case,t=0;16 scanf("%d",&_case);17 while(_case--){18 memset(num1,0,sizeof(num1));19 memset(num2,0,sizeof(num2));20 if(t++)puts("");21 scanf("%d",&n1);22 for(int i=1;i<=n1;i++)scanf("%d",&num1[i]);23 scanf("%d",&n2);24 for(int i=1;i<=n2;i++)scanf("%d",&num2[i]);25 memset(dp,0,sizeof(dp));26 for(int i=1;i<=n1;i++){27 int ans=0;28 for(int j=1;j<=n2;j++){29 dp[i][j]=dp[i-1][j];30 if(num2[j]<num1[i]&&ans<dp[i-1][j])ans=dp[i-1][j];//求出1-i,j中的最长公共子序列31 if(num1[i]==num2[j]){32 dp[i][j]=ans+1;33 }34 }35 }36 int ans=0;37 for(int i=1;i<=n2;i++)ans=max(ans,dp[n1][i]);38 printf("%d\n",ans);39 }40 return 0;41 }42 43 44 45 46 47 48 49
0 0
- hdu 1423 最长公共递增子序列
- hdu 1423最长公共递增子序列
- hdu 1423 最长递增公共子序列
- hdu 1423(最长公共递增子序列)
- hdu 1423+hdu 4512 最长公共递增子序列
- 最长递增公共子序列dp(hdu 1423 hdu 4512)
- 最长公共子序列 最长递增子序列(和) 最长递增公共子序列 最长(连续)子序列乘积(HDU)--dp
- HDU1423(最长公共递增子序列)
- 最长递增公共子序列(二)
- hdu 1423 Greatest Common Increasing Subsequence(最长公共递增子序列lcis)
- 最长递增公共子序列
- 最长公共递增子序列
- 最长公共递增子序列
- 最长公共递增子序列
- hdu 1257(最长递增子序列)
- 最长公共子序列+最长递增子序列+最长递增公共子序列
- hdu 1423 Greatest Common Increasing Subsequence_LICS(最长公共递增子序列)
- hdu 1423 Greatest Common Increasing Subsequence(最长公共递增子序列LICS)
- hdu 1296(多项式模拟)
- hdu 1302(简单模拟题)
- hdu 2832(数学题)
- hdu 1306(字符串匹配)
- NBU 1409(模拟题)
- hdu 1423(最长公共递增子序列)
- 黑色毛衣
- fzu校赛B题
- hdu 1496(hash经典)
- hdu 1270
- cf1b(字符串)
- hdu 1409
- hdu 1571(模拟)
- hdu 1497(图书管理系统模拟)