zoukankan      html  css  js  c++  java
  • 《算法设计与分析》 -- 第三章上机实践报告

    一、实践题目

    7-3 编辑距离问题

    二、问题描述

    输入两个字符串,使用最少的操作即最短编辑距离,将一个字符串变成另一个字符串,输出最短编辑距离


    三、算法描述

    1.定义:定义并输入两个字符串s,t,再定义一个二维数组dp[i][j]来记录s中第1到第i个字符,t中第1到第j个字符的最短编辑距离

    2.初始化:dp[0][j]=j,dp[i][0]=i(当有一个字符串没有字符时,另一个字符串最少的操作是将其字符全部删掉)

    3.填表:考虑s[i]和t[j]的关系:

          ①s[i]==t[j]时:dp[i][j]=dp[i-1][j-1](末尾有一个相同的字符时,不用操作,从各自的前一个字符开始计算)

          ②s[i]!=t[j]时:有三种操作,任意删除两个字符串其中一个的字符,即dp[i][j]=dp[i-1][j]+1 or dp[i][j]=dp[i][j-1]+1,修改其中一个的字符,dp[i][j]=dp[i-1][j-1]+1

                 然后三者取最小的,即dp[i][j]=min(dp[i-1][j-1], min(dp[i-1][j],dp[i][j-1])+1

    代码如下:

     View Code

    四、算法时间及空间复杂度分析(要有分析过程)

      时间复杂度为o(m*n):用了签表法,填充了一个m*n的表格。

      空间复杂度为o(1):


    五、心得体会(对本次实践收获及疑惑进行总结)

      做动态规划的题时要先写出递归方程,然后再解决边界问题,然后基本就能解决问题。

    认清现实,放弃幻想。 细节决定成败,心态放好,认真学习与工作。
  • 相关阅读:
    Win8系统 Python安装
    一些安卓开源框架整理
    Android 媒体键监听以及模拟媒体键盘的实现 demo
    android View 自动 GONE 问题
    Android 定时器TimerTask 简单使用
    关于Android studio 相对 eclipse 优点
    Java序列化与反序列化
    android shape的使用 边框
    Android Studio 修改 包名 package name
    Android WebView Long Press长按保存图片到手机
  • 原文地址:https://www.cnblogs.com/jyf2018/p/11716696.html
Copyright © 2011-2022 走看看