这段代码是用来反推出所有的最长公共子序列的,其中的i和j分别代表着两个字符串s1和s2的长度,在while循环里面,如果当前字符相等,那么将当前字符加入到res中,并且i和j都要减1,因为当前字符已经匹配成功了,需要继续匹配下一个字符。如果当前字符不相等,那么就需要比较dp[i-1][j]和dp[i][j-1]的大小,如果dp[i-1][j]大于或等于dp[i][j-1],那么i就要减1,因为当前字符在s1中匹配不上,需要继续往前匹配;反之,如果dp[i][j-1]大于dp[i-1][j],那么j就要减1,因为当前字符在s2中匹配不上,需要继续往前匹配。最终,通过这个while循环,就可以得到所有的最长公共子序列。

#include iostream#include fstream#include string#include vector#include algorithmusing namespace std;int main string s1 s2; ifstream fin字符串txt; 从文件中读取输入字符串 fin s1 s2; finclose; int l

原文地址: https://www.cveoy.top/t/topic/fWTB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录