动态规划问题,注意条件转移方程需要分情况讨论
字符相等时是从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; }