动态规划表格法解决最长公共子序列(LCS)问题

本文介绍了最长公共子序列(LCS)问题,通过动态规划的表格法详细解析了算法思路,包括问题描述、算法实现及复杂度分析。通过填充表格,找到两个字符串的LCS长度,并展示了一种具体的LCS路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3.5 最长公共子序列(LCS)

前言:图片是博主自己画的,转载请注明出处哦

3.5.1 问题描述

最长公共子序列(Longest Common Subseuence,LCS)问题:给定两个字符串,求解它们的最长公共子序列的长度,其中子序列是指:它是由原字符串在不改变字符的相对顺序的情况下,删除某些字符(也可以不删除任何字符)后组成的新字符串。
在这里插入图片描述

3.5.2 算法思路

简单地说,我们要填出下面这张表。
在这里插入图片描述

我们的目标是求出ABCBDAB和BDCABA的最长公共子序列。根据动态规划的原则,问题分阶段,那么最开始,我们可以看成求A和B、和BD…和BDCABA的最长公共子序列,这样就填出了第一行的值。
在这里插入图片描述

然后同样的道理,把第一列也填了。

在这里插入图片描述

这相当于基础工作,现在开始填写第二行。
归纳为:

  • 元素相同,则把左上角的值+1填入
  • 元素不同,则把相邻的上边和左边,这两格中最大的那一个数填入。

在这里插入图片描述

按照同样的道理,我们可以把整张表填完。这张表最右下角的值,就是最长公共子序列的长度
在这里插入图片描述

现在来求解最长公共子序列,因为最长公共子序列不唯一,我们这里就只求出一条路径
在这里插入图片描述

按照这样的原理,我们找出了一条路径。
根据填表原理,我们可以容易地看出一条最长公共子序列BCBA。当然,你也可以直接记忆为,谁往左上角走,就选谁,以及最后一个元素必须选,这样选中的就是最长公共子序列
在这里插入图片描述

3.5.3 表格法代码实现
public static String getLCSByTabulation(String str1, String str2){
   
        int row = str1.length();int col = str2.length();
        int []
<think>好的,我现在需要帮用户解决如何安装ChromeDriver并配置环境变量的问题。首先,用户可能已经知道ChromeDriver是用于自动化测试的工具,比如配合Selenium使用,但具体步骤可能不太清楚。 首先,我得确定用户的操作系统是什么,因为不同系统的安装和配置步骤有所不同。不过用户没有说明,所以我需要给出通用的步骤,涵盖Windows、macOS和Linux。 接下来,安装ChromeDriver的第一步是检查Chrome浏览器的版本。用户需要知道自己的浏览器版本,这样才能下载对应的ChromeDriver版本。如果版本不匹配,可能会出问题。因此,我需要详细说明如何查看Chrome的版本,比如在浏览器中输入chrome://version/。 然后,下载正确的ChromeDriver版本。用户需要访问官方网站,这里要确保提供的链接是正确的,避免用户下载到恶意软件。同时,要提醒用户选择与Chrome版本匹配的驱动,比如Chrome 124对应124.x.x.x的ChromeDriver。 解压下载的文件后,用户需要将ChromeDriver放到特定目录或者配置环境变量。这时候需要分不同操作系统来讲解。比如,Windows用户可以将exe文件放在Python的Scripts目录或者系统目录,而macOS和Linux用户可能需要放到/usr/local/bin这类路径,并赋予执行权限。 配置环境变量是关键步骤,用户可能需要知道如何修改系统变量。对于Windows,需要指导用户通过系统属性设置环境变量;对于macOS和Linux,则要修改.bash_profile或.zshrc文件。这部分需要步骤清晰,避免用户操作错误。 验证部分也很重要,用户需要运行一个测试脚本,确认ChromeDriver是否正确安装。如果测试成功,浏览器能打开,说明配置正确;如果失败,可能需要检查路径是否正确,或者版本是否匹配。 此外,常见问题部分应该涵盖用户可能遇到的典型错误,比如版本不匹配、路径错误、权限问题等。提前给出解决方案能帮助用户自行排查问题,减少后续的困惑。 最后,要确保语言简洁明了,步骤分点列出,便于用户一步步跟随操作。可能还需要提醒用户注意安全,从官网下载,避免安全风险。同时,考虑到用户可能是编程新手,避免使用过于专业的术语,保持解释的通俗易懂。</think>以下是 **安装 ChromeDriver 并配置环境变量** 的详细步骤: --- ### **1. 安装 ChromeDriver** #### **步骤 1:查看 Chrome 浏览器版本** 1. 打开 Chrome 浏览器,在地址栏输入:`chrome://version/`。 2. 记录 **Chrome 版本号**(例如 `124.0.6367.61`)。 #### **步骤 2:下载对应版本的 ChromeDriver** 1. 访问官方下载页面:[ChromeDriver 下载地址](https://chromedriver.chromium.org/downloads) 2. 找到与你的 Chrome 版本号匹配的 ChromeDriver 版本(例如 Chrome 124 → 下载 `124.0.6367.x`)。 - *若没有完全一致的版本,选择最接近的版本(例如 `124.0.6367.61` 可下载 `124.0.6367.0`)。* 3. 下载对应操作系统的文件: - **Windows**:`chromedriver_win32.zip` - **macOS**:`chromedriver_mac64.zip` - **Linux**:`chromedriver_linux64.zip` #### **步骤 3:解压文件** - 将下载的压缩包解压,得到 `chromedriver.exe`(Windows)或 `chromedriver`(macOS/Linux)。 --- ### **2. 配置环境变量** #### **Windows 系统** 1. **方一(推荐):将文件放入 Python 的 Scripts 目录** - 找到 Python 安装路径下的 `Scripts` 文件夹(例如 `C:\Python39\Scripts`)。 - 将 `chromedriver.exe` 复制到该目录。 **方二:添加系统环境变量** 1. 将 `chromedriver.exe` 放到任意目录(例如 `D:\tools`)。 2. 右键点击“此电脑” → “属性” → “高级系统设置” → “环境变量”。 3. 在“系统变量”中找到 `Path` → 点击“编辑” → 添加 `D:\tools`(你的存放路径)。 2. **验证安装**: - 打开命令提示符(CMD),输入: ```bash chromedriver --version ``` - 若显示版本号(如 `ChromeDriver 124.0.6367.60`),表示配置成功。 --- #### **macOS / Linux 系统** 1. **将文件放入系统路径**: ```bash # 将 chromedriver 移动到 /usr/local/bin(需管理员权限) sudo mv ~/Downloads/chromedriver /usr/local/bin/ # 赋予执行权限 sudo chmod +x /usr/local/bin/chromedriver ``` 2. **验证安装**: ```bash chromedriver --version ``` --- ### **3. 测试 ChromeDriver** 使用 Python 脚本验证是否生效: ```python from selenium import webdriver driver = webdriver.Chrome() # 若环境变量已配置,无需指定路径 driver.get("https://www.baidu.com") driver.quit() ``` - 若成功打开浏览器并访问百度,表示配置成功! --- ### **常见问题** 1. **版本不匹配** - 确保 Chrome 和 ChromeDriver 主版本号一致(例如 `Chrome 124.x` → `ChromeDriver 124.x`)。 2. **报错 `chromedriver not found`** - 检查环境变量路径是否正确,或直接在代码中指定驱动路径: ```python driver = webdriver.Chrome(executable_path="D:/tools/chromedriver.exe") ``` 3. **权限问题(macOS/Linux)** - 运行 `chmod +x /usr/local/bin/chromedriver` 赋予执行权限。 --- 通过以上步骤,即可完成 ChromeDriver 的安装与配置。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值