杭电OJ 1159 :Common Subsequence

来源:互联网 发布:淘宝分享送红包 编辑:程序博客网 时间:2024/06/05 08:58

这个题目是求两个字符串数组的最长公共子序列,是很经典的动态规划问题,详细的算法过程可以参考:http://blog.csdn.net/jiahui524/article/details/6653181。

C++代码:

#include<stdio.h>#include<string.h>const int N=1010;char arr1[N];char arr2[N];int dp[N][N];int MAX(int a,int b){if(a>b)return a;else return b;}int main(){//freopen("1.txt","r",stdin);while(scanf("%s%s",arr1,arr2)!=EOF){int len1=strlen(arr1),len2=strlen(arr2);int len=MAX(len1,len2);for(int i=0;i<len;i++){dp[0][i]=dp[i][0]=0;}for(int i=1;i<=len1;i++){for(int j=1;j<=len2;j++){if(arr1[i-1]==arr2[j-1])dp[i][j]=dp[i-1][j-1]+1;elsedp[i][j]=MAX(dp[i-1][j],dp[i][j-1]);}}printf("%d\n",dp[len1][len2]);}return 0;}


0 0
原创粉丝点击