zoukankan      html  css  js  c++  java
  • NYOJ 36最长公共子序列

     1 /*******************************************************
     2     状态转移方程:
     3     s1[i] == s2[j] 时,same[i,j] = 1;
     4     ans = max(a[i][j]+same[i,j], a[i][j-1], a[i-1][j])
     5 
     6 *****************************************************/
     7 #include<iostream>
     8 #include<cstring>
     9 #include<string>
    10 using namespace std;
    11 #define N 1005
    12 int a[N][N];
    13 string s1,s2;
    14 
    15 void dp()
    16 {
    17     int i,j;
    18     memset(a,0,sizeof(a));
    19     for(i = 0; i < s1.length(); i++)
    20         for(j = 0; j < s2.length(); j++)
    21         {
    22             if(s1[i] == s2[j]) a[i+1][j+1] = a[i][j] + 1;
    23             else a[i+1][j+1] = a[i+1][j]>a[i][j+1]?a[i+1][j]:a[i][j+1];
    24         }
    25 }
    26 
    27 int main()
    28 {
    29 //    freopen("in.txt","r",stdin);
    30     int t;
    31     cin>>t;
    32     while(t--)
    33     {
    34         cin>>s1>>s2;
    35         dp();
    36         cout<<a[s1.length()][s2.length()]<<endl;
    37     }
    38     return 0;
    39 }
  • 相关阅读:
    C语言数组和字符串函数
    C语言控制语句
    C语言输入输出函数
    C语言运算符
    C语言数据类型
    嵌入式开发基础知识
    VI编辑器的使用
    Linux文件系统和目录相关命令
    前段之必学(转载)
    26个高效工作的小技巧(转载)
  • 原文地址:https://www.cnblogs.com/yaling/p/3011093.html
Copyright © 2011-2022 走看看