最大公共子序列
/*2017.2.28 代文海*/
/*题意简介:求两个字符串的最大公共子序列
思路:设有字符串X和字符串Y, 数组l[i][j]表示字符串的前i个字符和字符串Y的前j个字符构成的最长公共子序列。
如果有X[i] = Y[j]那么有l[i][j]=l[i-1][j-1],否则l[i][j] = max(l[i][j-1], l[i-1][j]).
*/
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str1, str2;
int i, j, len1, len2;
int l[101][101] = {0};
cin >> str1>> str2;
len1 = str1.length(), len2 = str2.length();
for(i = 1; i <= len1; i++)
for( j = 1; j <= len2; j++)
if(str1.at(i-1) == str2.at(j-1))
l[i][j] = l[i-1][j-1] + 1;
else
l[i][j] = max(l[i-1][j], l[i][j-1]);
cout<<l[len1][len2]<< endl;
system("pause");
return 0;
}
最大子段和
/* 2017.2.28 代文海*/
/*给一个数列,求数列中的两个不相交的子段,要求字