首页 > 其他 > 详细

最长递增公共子序列

时间:2014-07-20 00:05:05      阅读:358      评论:0      收藏:0      [点我收藏+]
    #include <stdio.h>  
    #include <algorithm>  
    #include <string.h>  
    using namespace std;  
      
    int n,m,a[505],b[505],dp[505][505];  
      
    int LICS()  
    {  
        int MAX,i,j;  
        memset(dp,0,sizeof(dp));  
        for(i = 1; i<=n; i++)  
        {  
            MAX = 0;  
            for(j = 1; j<=m; j++)  
            {  
                dp[i][j] = dp[i-1][j];  
                if(a[i]>b[j] && MAX<dp[i-1][j])  
                    MAX = dp[i-1][j];  
                if(a[i]==b[j])  
                    dp[i][j] = MAX+1;  
            }  
        }  
        MAX = 0;  
        for(i = 1; i<=m; i++)  
            if(MAX<dp[n][i])  
                MAX = dp[n][i];  
        return MAX;  
    }  




优化成一维


#include <stdio.h>  
#include <string.h>  
#include <algorithm>  
using namespace std;  
  
int a[505],b[505],dp[505],n,m;  
  
int LICS()  
{  
    int i,j,MAX;  
    memset(dp,0,sizeof(dp));  
    for(i = 1; i<=n; i++)  
    {  
        MAX = 0;  
        for(j = 1; j<=m; j++)  
        {  
            if(a[i]>b[j] && MAX<dp[j])  
                MAX = dp[j];  
            if(a[i]==b[j])  
                dp[j] = MAX+1;  
        }  
    }  
    MAX = 0;  
    for(i = 1; i<=m; i++)  
        if(MAX<dp[i])  
            MAX = dp[i];  
    return MAX;  
}  


最长递增公共子序列,布布扣,bubuko.com

最长递增公共子序列

原文:http://blog.csdn.net/chaoyueziji123/article/details/37964785

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!