• poj(1458)(最长公共子序列)


     
    44 #include"iostream"
    45 #define M 1000 //适合数据量小的字符串,那么字符串长度过大时又如何处理?!
    46 using namespace std;
    47 int c[M][M];
    48 int Max(int a ,int b)
    49 {
    50 return a>b?a:b;
    51 }
    52 void LCD(char aa[], char bb[], int x, int y) //核心
    53 {
    54 int i,j;
    55 for(i=0;i<=x;i++)
    56 c[i][0]=0;
    57 for(j=0;j<=y;j++)
    58 c[0][j]=0;
    59
    60 for(i=1;i<=x;i++)
    61 for(j=1;j<=y;j++)
    62 {
    63 if(aa[i-1] == bb[j-1]) c[i][j] =c[i-1][j-1]+1; //将前一行前一列的值+1(即对角线上前一个点加1,目的是保证了所找到的字符串是最大的)
    64 else c[i][j]=Max(c[i][j-1],c[i-1][j]); //在不相等的情况下,将同列的前一行或者同行的前一列中选一个最大数赋给c[i][j],从而保证了下一次循环可以依然按照同样的方式进行;
    65 }
    66 }
    67 int main()
    68 {
    69 char a[M],b[M];
    70 int L1,L2;
    71 while(cin>>a>>b)
    72 {
    73 L1=strlen(a);
    74 L2=strlen(b);
    75 LCD(a,b,L1,L2);
    76 cout<<c[L1][L2]<<endl;
    77 }
    78 return 0;
    79 }
    http://poj.org/problem?id=1458
  • 相关阅读:
    凤凰传奇
    信息孤岛
    别了,中珠
    吃苦要趁早
    触动——beyond歌词
    走出舒适区,迎接挑战
    创新永存
    信息时代
    变色龙时代——创新
    Java基本的数据类型
  • 原文地址:https://www.cnblogs.com/FCWORLD/p/1985243.html
Copyright © 2020-2023  润新知