• poj2250


     1 #include<string.h>
     2 #include<stdio.h>
     3 #include<algorithm>
     4 #include<vector>
     5 #include<string>
     6 using namespace std;
     7 char a[1010][35],b[1010][35];
     8 int dir[1000][1000],dp[1000][1000];
     9 int LCS(int n,int m)
    10 {
    11     int i,j;
    12     for(i=1;i<=n;i++)//为了方便从1开始但是下面的i-1对正下标
    13         for(j=1;j<=m;j++)
    14         {
    15             if(strcmp(a[i-1],b[j-1])==0)
    16             {
    17                 dp[i][j]=dp[i-1][j-1]+1;
    18                 dir[i][j]=1;
    19             }
    20             else if(dp[i-1][j]>=dp[i][j-1])
    21             {
    22                 dp[i][j]=dp[i-1][j];
    23                 dir[i][j]=0;
    24             }
    25             else
    26             {
    27                 dp[i][j]=dp[i][j-1];
    28                 dir[i][j]=2;
    29             }
    30         }
    31         return dp[n][m];
    32 }
    33 void print(int r,int c)
    34 {
    35     if(r==0 || c==0) return;
    36     if(dir[r][c]==1)
    37     {
    38         print(r-1,c-1);
    39         printf("%s ",a[r-1]);
    40     }
    41     else if(dir[r][c]==0) print(r-1,c);
    42     else print(r,c-1);
    43 }
    44 int main()
    45 {
    46     int i,n,m;
    47     char s[40];
    48      while(scanf("%s",&s)!=EOF)
    49      {
    50          n=0;
    51          int flag=1;
    52          strcpy(a[n++],s);
    53          while(flag)
    54          {
    55              scanf("%s",a[n++]);
    56              if(a[n-1][0]=='#') flag=0;
    57          }
    58          /*for(i=0;i<n;i++)
    59              printf("%s
    ",a[i]);*/
    60          n=n-1;
    61          flag=1;
    62          m=0;
    63          while(flag)
    64          {
    65              scanf("%s",b[m++]);
    66              if(b[m-1][0]=='#') flag=0;
    67          }
    68            /*for(i=0;i<m;i++)
    69              printf("%s
    ",b[i]);*/
    70          m=m-1;
    71          //printf("%d
    ",LCS(n,m));
    72          LCS(n,m);
    73          print(n,m);
    74          //printf("
    ");
    75     }
    76      return 0;
    77 }

    18:09:13

  • 相关阅读:
    文件操作实例加强
    文件操作的一般基础操作
    列表与if语句的结合
    难题记录
    字典,集合,列表混合使用需注意:
    列表的一些难度操作
    字符串知识巩固
    and与or的用法
    AngularJS中的过滤器
    NodeJS中的静态资源管理服务
  • 原文地址:https://www.cnblogs.com/okboy/p/3223441.html
Copyright © 2020-2023  润新知