zoukankan      html  css  js  c++  java
  • UVA 10405 Longest Common Subsequence

    本题是求最长公共子序列,题目也给了提示,是求最长公共子序列最基本的题。

    注意字符串的读取要用gets()而不用scanf()因为字符串里可能有空格。

    代码如下:

    #include<stdio.h>
    #include<string.h>
    #define MAXN 1000 + 10
    char a[MAXN], b[MAXN];
    int f[MAXN][MAXN];
    void dp()
    {
    int len1 = strlen(a+1);
    int len2 = strlen(b+1);
    int max = -1;
    for(int i = 1; i <= len1; i ++)
    for(int j = 1; j <= len2; j ++)
    {
    if(a[i] == b[j]) f[i][j] = f[i-1][j-1] + 1;
    else
    {
    if(f[i-1][j] > f[i][j-1]) f[i][j] = f[i-1][j];
    else f[i][j] = f[i][j-1];
    }
    if(f[i][j] > max) max = f[i][j];
    }
    printf("%d\n",max);
    }
    void input()
    {
    memset(f,0,sizeof(f));
    while(gets(a+1) != NULL)
    {
    gets(b+1);
    dp();
    }
    }
    int main()
    {
    input();
    return 0;
    }



  • 相关阅读:
    第四章的知识点:
    第一章的知识点:
    13
    12
    11
    10
    9
    zy
    金嘉琪 作业
    1022作业
  • 原文地址:https://www.cnblogs.com/yuzhaoxin/p/2385158.html
Copyright © 2011-2022 走看看