zoukankan      html  css  js  c++  java
  • IOI2000

    <问题分析>

    将字符串与本身的反转字符串求最长公共子序列。

     1 #include <stdio.h>
     2 #include <string.h>
     3  
     4 int main()
     5 {
     6     char s[5001],r[5001];
     7     short v[2][5001];
     8     int i,j,n;
     9     scanf("%s",s);
    10     strcpy(r,s);
    11     strrev(r);
    12     if(s[0]==r[0])
    13     {
    14        v[0][0]=1;
    15     }
    16     else
    17     {
    18        v[0][0]=0;
    19     }
    20     if(v[0][0]==1||s[0]==r[1])
    21     {
    22        v[0][1]=1;
    23     }
    24     else
    25     {
    26        v[0][1]=0;
    27     }
    28     if(v[0][0]||s[1]==r[0])
    29     {
    30        v[1][0]=1;
    31     }
    32     else
    33     {
    34        v[1][0]=0;
    35     }
    36     
    37     for(i=1;i<strlen(s);i++)
    38     {
    39        for(j=1;j<strlen(r);j++)
    40        {
    41           if(s[i]==r[j])
    42           {
    43               v[i%2][j]=v[(i-1)%2][j-1]+1;
    44           }
    45           else if(v[(i-1)%2][j]>v[i%2][j-1])
    46           {
    47               v[i%2][j]=v[(i-1)%2][j];
    48           }
    49           else
    50           {
    51               v[i%2][j]=v[i%2][j-1];
    52           }
    53        } 
    54     } 
    55     printf("%d
    ",strlen(s)-v[(i-1)%2][j-1]);
    56     while(true);
    57     return 0;
    58 }
  • 相关阅读:
    ES6
    django创建超级用户
    小程序-网络请求api
    小程序-数据双向绑定
    POJ2406 Power Strings
    POJ2758 Checking the Text
    LightOJ1197
    51Nod
    CF55D
    Kattis
  • 原文地址:https://www.cnblogs.com/simplesslife/p/REVS.html
Copyright © 2011-2022 走看看