洛谷 P2543 [AHOI2004]奇怪的字符串

题目传送门

解题思路:

本题朴素求最长公共子序列即可,但是空间不够,怎么办呢?

空间不够,滚动数组来救

AC代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 
 4 using namespace std;
 5 
 6 string l,l1;
 7 int f[2][10002],m;
 8 
 9 inline int max(int a,int b) {
10     if(a >= b) return a;
11     return b; 
12 }
13 
14 int main() {
15     cin >> l >> l1;
16     for(int i = 0;i < l.length(); i++) {
17         for(int j = 1;j <= l1.length(); j++) {
18             if(l[i] == l1[j-1])
19                 f[m][j] = f[m^1][j-1] + 1;
20             else 
21                 f[m][j] = max(f[m^1][j],f[m][j-1]);
22         }
23         m = m ^ 1;
24     }
25     printf("%d",f[m^1][l1.length()]);
26     return 0;
27 }
原文地址:https://www.cnblogs.com/lipeiyi520/p/12319495.html