编辑距离 内存限制: 256 Mb时间限制: 1000 ms 题目描述 给定两个字符串 s s 与 t t,请计算 s s 到 t t 的编辑距离。所谓编辑距离,就是最少进行多少步修改可以将 s s 变成 t t,每次修改操作可以从以下操作选择一种: 插入一个字符 删除一个字符 替换一个字符 编辑距离是一个很重要的概念,比如: 微信公众号有个规定:已经发表的文章,只能修改 20 20 个字。所以公众号的运营人员需要仔细计算新旧文章的编辑距离。 DNA 是由 actg 四个字母组成的字符串,编辑距离可以规划编辑 DNA 的最佳方案。 输入格式 第一行:一个字符串 s s,由小写英文字符组成 第二行:一个字符串 t t,由小写英文字符组成 输出格式 单个整数:表示两个字符串的编辑距离 数据范围 1 ≤ ∣ s ∣ ≤ 2000 1≤∣s∣≤2000 1 ≤ ∣ t ∣ ≤ 2000 1≤∣t∣≤2000 样例数据 输入: atcg tcga 输出: 2 说明: 删除第一个a,然后在字符串尾部再加一个a 输入: abcdefg gfedcba 输出: 6 用C++写,普通写法,简单一点,不要


```cpp #include <iostream> #include <cstring> using namespace std; const int MAXN = 2005; // 定义一个二维数组来存储子问题的解 int dp[MAXN][MAXN]; int min(int a, int b, int c) { // 找出三个数中的最小值 if (a <= b && a <= c) return a; if (b <= a && b <= c) return b; return c; } int main() { char s[MAXN], t[MAXN]; // 读取两个输入的字符串 cin >> s >> t; int lenS = strlen(s); int lenT = strlen(t); // 初始化边界条件 for (int i = 0; i <= lenS; i++) { dp[i][0] = i; } for (int j = 0; j <= lenT; j++) { dp[0][j] = j; } // 动态规划填充dp数组 for (int i = 1; i <= lenS; i++) { for (int j = 1; j <= lenT; j++) { if (s[i - 1] == t[j - 1]) { dp[i][j] = dp[i - 1][j - 1]; } else { // 取插入、删除、替换三种操作的最小值加1 dp[i][j] = min(dp[i - 1][j] + 1, dp[i][j - 1] + 1, dp[i - 1][j - 1] + 1); } } } // 输出结果 cout << dp[lenS][lenT] << endl; return 0; } ``` 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. 注意字符串数组的下标从0开始,而`dp`数组的下标从1开始处理子问题,避免出现数组越界错误。 2. 边界条件的初始化很重要,要确保`dp[i][0]`和`dp[0][j]`正确初始化,否则会影响最终结果。 3. 在比较字符是否相等时,要注意字符串的下标和`dp`数组下标的对应关系,避免出现逻辑错误。 [2025-08-22 15:49:32 | AI写代码神器 | 547点数解答]
- 编辑距离 内存限制: 256 Mb时间限制: 1000 ms 题目描述 给定两个字符串 s s 与 t t,请计算 s s 到 t t 的编辑距离。所谓编辑距离,就是最少进行多少步修改可以将 s s 变成 t t,每次修改操作可以从以下操作选择一种: 插入一个字符 删除一个字符 替换一个字符 编辑距离是一个很重要的概念,比如: 微信公众号有个规定:已经发表的文章,只能修改 20 20 个字。所以公众号的运营人员需要仔细计算新旧文章的编辑距离。 DNA 是由 actg 四个字母组成的字符串,编辑距离可以规划编辑 DNA 的最佳方案。 输入格式 第一行:一个字符串 s s,由小写英文字符组成 第二行:一个字符串 t t,由小写英文字符组成 输出格式 单个整数:表示两个字符串的编辑距离 数据范围 1 ≤ ∣ s ∣ ≤ 2000 1≤∣s∣≤2000 1 ≤ ∣ t ∣ ≤ 2000 1≤∣t∣≤2000 样例数据 输入: atcg tcga 输出: 2 说明: 删除第一个a,然后在字符串尾部再加一个a 输入: abcdefg gfedcba 输出: 6 用C++写,普通写法,简单一点,不要(547点数解答 | 2025-08-22 15:49:32)69
- 编辑距离 内存限制: 256 Mb时间限制: 1000 ms 题目描述 给定两个字符串 s s 与 t t,请计算 s s 到 t t 的编辑距离。所谓编辑距离,就是最少进行多少步修改可以将 s s 变成 t t,每次修改操作可以从以下操作选择一种: 插入一个字符 删除一个字符 替换一个字符 编辑距离是一个很重要的概念,比如: 微信公众号有个规定:已经发表的文章,只能修改 20 20 个字。所以公众号的运营人员需要仔细计算新旧文章的编辑距离。 DNA 是由 actg 四个字母组成的字符串,编辑距离可以规划编辑 DNA 的最佳方案。 输入格式 第一行:一个字符串 s s,由小写英文字符组成 第二行:一个字符串 t t,由小写英文字符组成 输出格式 单个整数:表示两个字符串的编辑距离 数据范围 1 ≤ ∣ s ∣ ≤ 2000 1≤∣s∣≤2000 1 ≤ ∣ t ∣ ≤ 2000 1≤∣t∣≤2000 样例数据 输入: atcg tcga 输出: 2 说明: 删除第一个a,然后在字符串尾部再加一个a 输入: abcdefg gfedcba 输出: 6 用C++写,普通写法,简单一点,不要(571点数解答 | 2025-08-22 15:51:59)79
- 编辑距离 内存限制: 256 Mb时间限制: 1000 ms 题目描述 给定两个字符串 s s 与 t t,请计算 s s 到 t t 的编辑距离。所谓编辑距离,就是最少进行多少步修改可以将 s s 变成 t t,每次修改操作可以从以下操作选择一种: 插入一个字符 删除一个字符 替换一个字符 编辑距离是一个很重要的概念,比如: 微信公众号有个规定:已经发表的文章,只能修改 20 20 个字。所以公众号的运营人员需要仔细计算新旧文章的编辑距离。 DNA 是由 actg 四个字母组成的字符串,编辑距离可以规划编辑 DNA 的最佳方案。 输入格式 第一行:一个字符串 s s,由小写英文字符组成 第二行:一个字符串 t t,由小写英文字符组成 输出格式 单个整数:表示两个字符串的编辑距离 数据范围 1 ≤ ∣ s ∣ ≤ 2000 1≤∣s∣≤2000 1 ≤ ∣ t ∣ ≤ 2000 1≤∣t∣≤2000 样例数据 输入: atcg tcga 输出: 2 说明: 删除第一个a,然后在字符串尾部再加一个a 输入: abcdefg gfedcba 输出: 6 c++写,简单(521点数解答 | 2025-08-20 14:58:56)74
- 编辑距离 内存限制: 256 Mb时间限制: 1000 ms 题目描述 给定两个字符串 s s 与 t t,请计算 s s 到 t t 的编辑距离。所谓编辑距离,就是最少进行多少步修改可以将 s s 变成 t t,每次修改操作可以从以下操作选择一种: 插入一个字符 删除一个字符 替换一个字符 编辑距离是一个很重要的概念,比如: 微信公众号有个规定:已经发表的文章,只能修改 20 20 个字。所以公众号的运营人员需要仔细计算新旧文章的编辑距离。 DNA 是由 actg 四个字母组成的字符串,编辑距离可以规划编辑 DNA 的最佳方案。 输入格式 第一行:一个字符串 s s,由小写英文字符组成 第二行:一个字符串 t t,由小写英文字符组成 输出格式 单个整数:表示两个字符串的编辑距离 数据范围 1 ≤ ∣ s ∣ ≤ 2000 1≤∣s∣≤2000 1 ≤ ∣ t ∣ ≤ 2000 1≤∣t∣≤2000 样例数据 输入: atcg tcga 输出: 2 说明: 删除第一个a,然后在字符串尾部再加一个a 输入: abcdefg gfedcba 输出: 6 用C++写,普(586点数解答 | 2025-08-22 15:48:48)58
- 三倍子串 内存限制: 256 Mb时间限制: 1000 ms 题目描述 给定一个十进制正整数 n n,请问可以从 n n 中截取多少种不同的子串,使得子串构成的数字是 3 3 的倍数。 例如:当 n = 1234 n=1234 时,有且仅有 3 3, 12 12, 123 123, 234 234 这四个子串是 3 3 的倍数。 输入格式 单个整数:表示输入的数字 n n 输出格式 单个整数:表示 3 3 的倍数的子串数量。 数据范围 对于 20 % 20% 的数据, 1 ≤ n ≤ 1 0 9 1≤n≤10 9 ; 对于 50 % 50% 的数据, 1 ≤ n ≤ 1 0 100 1≤n≤10 100 ; 对于 70 % 70% 的数据, 1 ≤ n ≤ 1 0 1000 1≤n≤10 1000 ; 对于 100 % 100% 的数据, 1 ≤ n ≤ 1 0 100000 1≤n≤10 100000 样例数据 输入: 95764 输出: 6 说明: 子串6,9,57,576,957,9576是3的倍数 输入: 1111 输出: 2 说(486点数解答 | 2025-08-29 11:52:55)82
- 限制: 256 Mb时间限制: 1000 ms 题目描述 给定一个整数 n n,请打印一个具有 n n 层结构的三角形金字塔,例如当 n = 3 n=3 时,打印如下图形: /\ /__\ /\ /\ /__\/__\ /\ /\ /\ /__\/__\/__\ 输入格式 单个整数:表示 n n。 输出格式 根据题意输出层次为 n n 的三角形金字塔。 数据范围 1 ≤ n ≤ 30 1≤n≤30。 样例数据 输入: 3 输出: /\ /__\ /\ /\ /__\/__\ /\ /\ /\ /__\/__\/__\ 输入: 8 输出: /\ /__\ /\ /\ /__\/__\ /\ /\ /\ /__\/__\/__\ /\ /\ /\ /\ /__\/__\/__\/__\ (186点数解答 | 2025-08-07 11:10:40)78
- 题目(description): 卫星导航系统(如我国自主研发的北斗卫星导航系统)能实时获取位置、速度、时间等时空信息,在交通运输、农林渔业、气象测报、通信授时、救灾减灾、公共安全等领域都得到了广泛应用。 在应用层面,卫星导航系统一般以报文方式进行数据传输,其中$gprmc是常用报文之一,基本的格式如下: $gprmc,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh <1> utc时间,hhmmss.sss(时分秒.毫秒)格式 <2> 定位状态,a=有效定位,v=无效定位 <3> 纬度ddmm.mmmm(度分)格式 <4> 纬度半球n(北半球)或s(南半球) <5> 经度dddmm.mmmm(度分)格式 <6> 经度半球e(东经)或w(西经) <7> 地面速率(000.0~999.9节) <8> 地面航向(000.0~359.9度,以正北为参考基准) <9> utc日期,ddmmyy(日月年)格式 <10> 磁偏角(000.0~180.0度,前面的0也(385点数解答 | 2025-01-08 03:43:54)291
- 题目(description): 卫星导航系统(如我国自主研发的北斗卫星导航系统)能实时获取位置、速度、时间等时空信息,在交通运输、农林渔业、气象测报、通信授时、救灾减灾、公共安全等领域都得到了广泛应用。 在应用层面,卫星导航系统一般以报文方式进行数据传输,其中$gprmc是常用报文之一,基本的格式如下: $gprmc,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh <1> utc时间,hhmmss.sss(时分秒.毫秒)格式 <2> 定位状态,a=有效定位,v=无效定位 <3> 纬度ddmm.mmmm(度分)格式 <4> 纬度半球n(北半球)或s(南半球) <5> 经度dddmm.mmmm(度分)格式 <6> 经度半球e(东经)或w(西经) <7> 地面速率(000.0~999.9节) <8> 地面航向(000.0~359.9度,以正北为参考基准) <9> utc日期,ddmmyy(日月年)格式 <10> 磁偏角(000.0~180.0度,前面的0也(346点数解答 | 2025-01-08 03:46:29)285
- a:课程管理:学生可以添加、编辑、删除课程信息,包括课 程名称、时间、地点 b.作业管理:学生可以添加、编辑、删除作业,并设置作业 的截止日期。 c.考试管理:学生可以添加、编辑、删除考试信息,并设置 提醒时间。 d.数据存储:使用sqlite存储课程、作业、考试等数据。 e.提醒功能:通过通知提醒学生在作业和考试前做好准备。 f.通知功能:通过广播接收器实现新消息的通知提醒。 g.界面设计:使用多种布局管理器设计友好的用户界面,支 持不同屏幕尺寸和方向。 h.页面跳转:实现主页、添加课程页、作业详情页、考试详 情页之间的跳转。 2. 应用程序的开发要围绕主题, 自主设计,结合所学的 android应用开发的知识,综合应用到此app开发中,功能全面,合 理且美观; 3. 设计说明书,要从系统开发背景、需求分析、系统功能需求 、android 手机客户端总体架构设计、手机客户端系统功能模块设 计、 数据库设计(数据表的设计)等。图文并茂,详细格式参考 模板; 4.进行系统测试和调试,确保系统功能完善和稳定性; 5.编写设计说明书,详细记录系统的设计思路、各模块的功能 和使用方法,要图文并(84点数解答 | 2024-12-14 13:46:35)183
- a:课程管理:学生可以添加、编辑、删除课程信息,包括课 程名称、时间、地点 b.作业管理:学生可以添加、编辑、删除作业,并设置作业 的截止日期。 c.考试管理:学生可以添加、编辑、删除考试信息,并设置 提醒时间。 d.数据存储:使用sqlite存储课程、作业、考试等数据。 e.提醒功能:通过通知提醒学生在作业和考试前做好准备。 f.通知功能:通过广播接收器实现新消息的通知提醒。 g.界面设计:使用多种布局管理器设计友好的用户界面,支 持不同屏幕尺寸和方向。 h.页面跳转:实现主页、添加课程页、作业详情页、考试详 情页之间的跳转。 2. 应用程序的开发要围绕主题, 自主设计,结合所学的 android应用开发的知识,综合应用到此app开发中,功能全面,合 理且美观; 3. 设计说明书,要从系统开发背景、需求分析、系统功能需求 、android 手机客户端总体架构设计、手机客户端系统功能模块设 计、 数据库设计(数据表的设计)等。图文并茂,详细格式参考 模板; 4.进行系统测试和调试,确保系统功能完善和稳定性; 5.编写设计说明书,详细记录系统的设计思路、各模块的功能 和使用方法,要图文并(30点数解答 | 2024-12-14 13:47:04)144
- 题目背景 english statement. you must submit your code at the chinese version of the statement. 题目描述 给定一个长为 𝑛 n 的序列 𝑎 1 , 𝑎 2 , 𝑎 3 , … , 𝑎 𝑛 a 1 ,a 2 ,a 3 ,…,a n ,你需要执行 𝑘 k 次操作使这个序列为空。 每次操作可以执行下列内容之一: 选择两个数 𝑖 , 𝑗 i,j,交换 𝑎 𝑖 , 𝑎 𝑗 a i ,a j (需要满足 1 ≤ 𝑖 < 𝑗 ≤ 𝑛 1≤i<j≤n)。 选择两个数 𝑖 , 𝑗 i,j,删除 𝑎 𝑖 , 𝑎 𝑖 + 1 , … , 𝑎 𝑗 a i ,a i+1 ,…,a j (需要满足 1 ≤ 𝑖 ≤ 𝑗 ≤ 𝑛 1≤i≤j≤n,且 𝑎 𝑖 = 𝑎 𝑗 a i =a j )。 请输出最小的操作数 𝑘 k。 输入格式 第一行输入一个正整数 𝑇 t( 1 ≤ 𝑇 ≤ 5 1≤t≤5),表示有 𝑇 t 个测试数据。 对于每个测试数据: 第一行输入一个正整数 𝑛 n( 1 ≤ 𝑛 ≤ 1 0 5 1≤n≤10 5 ),表示序列长度为 𝑛 n。 第二行输入 𝑛 n 个正整数 𝑎 1 , 𝑎 2 … 𝑎 𝑛 a 1 ,a 2 …a n ( 0 ≤ 𝑎 𝑖 ≤ 1 0 9 0≤a i ≤10 9 )。 输出格式 对于每个测试数据输出一个正整数 𝑘 k,表示最少的操作次数。 输入输出样例 输入 #1复制 2 5 1 2 3 2 3 3 1000000000 1000000000 99999999 输出 #1复制 2 2 说明/提示 数据范围 子任务 分值 限制 1 1 10 10 𝑛 ≤ 3 n≤3 2 2 20 20 𝑛 ≤ 10 n≤10 3 3 20 20 𝑎 𝑖 ≤ 2 a i ≤2 4 4 10 10 保证所有 𝑎 𝑖 a i 相等 5 5 40 40 - 对于 100 % 100%,语言方向:C++,系统环境:Linux,代码风格:时间复杂度优先(331点数解答 | 2024-12-21 16:26:29)206
- 田忌赛马 内存限制: 256 Mb时间限制: 1000 ms 题目描述 田忌和齐王各有 n n 匹马,田忌的马速度分别为 a 1 , a 2 , … , a n a1,a2,…,a n ,而齐王的马速度分别为 b 1 , b 2 , … , b n b1,b2,…,b n 。 田忌与齐王比赛 n n 轮,双方每轮挑出一匹新马,若田忌的马更快,田忌加一分,若齐王的马更快,齐王加一分,若双方速度一样,分数不变。 齐王永远按照固定的顺序选择马匹参赛,田忌应该采取什么策略才能让自己的得分减齐王的得分变得最大? 输入格式 第一行:单个整数 n n 第二行: n n 个整数 a 1 , a 2 , … , a n a1,a2,…,a n 第三行: n n 个整数 b 1 , b 2 , … , b n b1,b2,…,b n 输出格式 单个整数:表示田忌得分减齐王得分的最大值 数据范围 对于 30 % 30% 的数据, n ≤ 20 n≤20 对于 60 % 60% 的数据, n ≤ 2000 n≤2000 对于 100 % 100(567点数解答 | 2025-08-29 11:43:43)52