您的位置:首页 > 产品设计 > UI/UE

POJ-1458 Common Subsequence

2016-06-12 11:29 405 查看
#include <iostream>
#include <string>

//求最长公共子序列
using namespace std;

int const MAX_NUM = 1010;
int dp[MAX_NUM][MAX_NUM];

int max(int a,int b){
return a>b?a:b;
}

int main(){

string s1,s2;
while(cin>>s1>>s2){
int len1 = s1.length();
int len2 = s2.length();

for(int i = 1; i <= len1; i++){
for(int j = 1; j <= len2; j++){
dp[i][j] = 0;
}
}

for(int i = 1; i <= len1; i++){
for(int j = 1; j <= len2; j++){
if(s1[i-1] == s2[j-1]){
dp[i][j] = dp[i-1][j-1]+1;
}else{
dp[i][j] = max(dp[i-1][j],dp[i][j-1]);
}
}
}

cout<<dp[len1][len2]<<endl;
}

return 0;
}


分析:采用动态规划解决
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: