题目:给定两个字符串A和B,如果|A[i]-B[j]|算法基本思路:模拟求解最长公共子序列(LCS)的过程即可,关键是要有这一步的判断,其余步骤都与LCS算法过程一样。
完整代码:
#include#include #include using namespace std; int main(){ int m, T = 2;//T为相似度 string str1, str2; cin >> m; while(m--){ cin >> str1 >> str2; int dp[501][501] = {0}; for(int i = 1; i <= str1.size(); i++){ for(int j = 1; j <= str2.size(); j++){ if(abs(str1[i-1] - str2[j-1]) < T){ dp[i][j] = dp[i-1][j-1] + 1; } else{ dp[i][j] = max(dp[i-1][j], dp[i][j-1]); } } } cout << dp[str1.size()][str2.size()] << endl; } }
运行结果:T相似度最大长度的两个字符串,A=423423, B=323432.



