zoukankan      html  css  js  c++  java
  • 最长公共子序列解题报告

    if(x[i]==y[j])    f[i][j]=f[i-1][j-1]+1;
    else if(x[i]!=y[j])    f[i][j]=max(f[i-1][j], f[i][j-1]);
    原决策

    这一块其实
    动规方程是

    f[i][j]=max(f[i-1][j-1]+(x[i]==y[j]), f[i][j-1], f[i-1][j]);
    动规方程

    可以联系到射箭一题

     1 #include <stdio.h>
     2 #define maxn 501
     3 int x[maxn], y[maxn], f[maxn][maxn];
     4 int max(int a, int b)
     5 {
     6     if(a>b)    return a;
     7     return b;
     8 }
     9 int main()
    10 {
    11     int i, j, lx, ly;
    12     scanf("%d%d", &lx, &ly);
    13     for(i=1; i<=lx; i++)    scanf("%d", &x[i]);
    14     for(i=1; i<=ly; i++)    scanf("%d", &y[i]);
    15     for(i=1; i<=lx; i++)
    16         for(j=1; j<=ly; j++)
    17         {
    18             if(x[i]==y[j])    f[i][j]=f[i-1][j-1]+1;
    19             else if(x[i]!=y[j])    f[i][j]=max(f[i-1][j], f[i][j-1]);
    20             //可以变成一句
    21             //f[i][j]=max(f[i-1][j-1]+(x[i]==y[j]), f[i][j-1], f[i-1][j]);
    22         }
    23     printf("%d", f[lx][ly]);
    24     return 0;
    25 }
    完整代码
  • 相关阅读:
    互联网资源获取
    Linux tomcat安装
    Linux JDK安装
    Linux入门教程
    windows命令行 查看文件树结构
    Gitea搭建及使用
    Jenkins搭建及使用
    Linux 基础环境搭建
    SpringBoot
    JSON Web Token(JWT)学习
  • 原文地址:https://www.cnblogs.com/formiko/p/4418209.html
Copyright © 2011-2022 走看看