• Luogu2543[AHOI2004]奇怪的字符串 (动态规划 LCS)


    04年的省选这么water吗,开个滚动数组算了

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    #define R(a,b,c) for(register int  a = (b); a <= (c); ++ a)
    #define nR(a,b,c) for(register int  a = (b); a >= (c); -- a)
    #define Max(a,b) ((a) > (b) ? (a) : (b))
    #define Min(a,b) ((a) < (b) ? (a) : (b))
    #define Fill(a,b) memset(a, b, sizeof(a))
    #define Swap(a,b) a^=b^=a^=b
    #define ll long long
    #define ON_DEBUG
    
    #ifdef ON_DEBUG
    
    #define D_e_Line printf("
    
    ----------
    
    ")
    #define D_e(x)  cout << #x << " = " << x << endl
    #define Pause() system("pause")
    
    #else
    
    #define D_e_Line ;
    
    #endif
    
    struct ios{
        template<typename ATP>ios& operator >> (ATP &x){
            x = 0; int f = 1; char c;
            for(c = getchar(); c < '0' || c > '9'; c = getchar()) if(c == '-')  f = -1;
            while(c >= '0' && c <= '9') x = x * 10 + (c ^ '0'), c = getchar();
            x*= f;
            return *this;
        }
    }io;
    using namespace std;
    
    const int N = 10007;
    
    char a[N], b[N];
    int f[2][N];
    
    int main(){
        
        scanf("%s%s", a, b);
        int lenA = strlen(a), lenB = strlen(b);
        
        R(i,1,lenA)
        	R(j,1,lenB){
        	    if(a[i-1] == b[j-1])
    				f[i&1][j] = f[(i-1)&1][j-1] + 1;
        		else
    				f[i&1][j] = Max(f[(i-1)&1][j], f[i&1][j-1]);
        	}
        	
    	printf("%d", f[lenA&1][lenB]);
    	return 0;
    }
    

  • 相关阅读:
    常用的标签分类
    css 实现动态二级菜单
    5大主流浏览器内核
    MySQL里面的子查询
    Algolia Search
    Nginx配置
    PHP中Abstract与Interface区别
    Shell 基本语法
    百度 echarts K线图使用
    php_soap扩展应用
  • 原文地址:https://www.cnblogs.com/bingoyes/p/11218193.html
Copyright © 2020-2023  润新知