动态规划问题,注意条件转移方程需要分情况讨论
字符相等时是从dp[i-1][j-1]转移过来
#include<iostream>
#include<math.h>
using namespace std;
int main(){
string a,b;
int dp[101][101];
for(int i=0;i<101;i++){
dp[i][0] = 0;
dp[0][i] = 0;
}
cin>>a>>b;
int len1 = a.size();
int len2 = b.size();
for(int i=1;i<=len1;i++){
for(int j=1;j<=len2;j++){
if(a[i-1]==b[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;
}

京公网安备 11010502036488号