C++ 动态规划 线性DP 编辑距离

给定 n
个长度不超过 10
的字符串以及 m
次询问,每次询问给出一个字符串和一个操作次数上限。

对于每次询问,请你求出给定的 n
个字符串中有多少个字符串可以在上限操作次数内经过操作变成询问给出的字符串。

每个对字符串进行的单个字符的插入、删除或替换算作一次操作。

输入格式
第一行包含两个整数 n
和 m

接下来 n
行,每行包含一个字符串,表示给定的字符串。

再接下来 m
行,每行包含一个字符串和一个整数,表示一次询问。

字符串中只包含小写字母,且长度均不超过 10

输出格式
输出共 m
行,每行输出一个整数作为结果,表示一次询问中满足条件的字符串个数。

数据范围
1≤n,m≤1000
,

输入样例:
3 2
abc
acd
bcd
ab 1
acbd 2
输出样例:
1
3

就是上一题的应用,主要是处理输入输出,算法完全一样。C++ 动态规划 线性DP 最短编辑距离

#include <iostream>
#include <algorithm>
#include <string.h>using namespace std;const int N = 15, M = 1010;int n, m;
int f[N][N];
char str[M][N];int edit_distence(char a[], char b[])
{int la = strlen(a + 1), lb = strlen(b + 1);for(int i = 0; i <= lb; i ++ ) f[0][i] = i;for(int i = 0; i <= la; i ++ ) f[i][0] = i;for(int i = 1; i <= la; i ++ )for(int j = 1; j <= lb; j ++ ){f[i][j] = min(f[i - 1][j] + 1, f[i][j - 1] + 1);if(a[i] == b[j])f[i][j] = min(f[i][j], f[i - 1][j - 1]);elsef[i][j] = min(f[i][j], f[i - 1][j - 1] + 1);}return f[la][lb];
}int main ()
{scanf("%d%d", &n, &m);for(int i = 0; i < n; i ++ ) scanf("%s", str[i] + 1);while(m -- ){char s[N];int limit;scanf("%s%d", s + 1, &limit);int res = 0;for(int i = 0; i < n; i ++ ){if(edit_distence(str[i], s) <= limit)res ++;}printf("%d\n", res);}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/682346.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PLC_博图系列☞FBFC

PLC_博图系列☞FB&FC 文章目录 PLC_博图系列☞FB&FC背景介绍FB&FC与C 类比博图中定义函数块 (FB)函数 (FC) 关键字&#xff1a; PLC、 西门子、 博图、 FC 、 FB 背景介绍 这是一篇关于PLC编程的文章&#xff0c;特别是关于西门子的博图软件。我并不是专业的P…

新项目,从0到1,SpringBoot+Vue.js权限管理系统,拿去做毕设

大家好&#xff0c;我是 jonssonyan 最近把以前做的权限管理系统重新整理了一下&#xff08;将一些不规范的地方规范了一下&#xff0c;并且在关键地方写了注释&#xff09;&#xff0c;代码全部开源&#xff0c;这个项目是以现在主流的前后端分离模式开发的&#xff0c;包含前…

vue3 + Babylon.js 实现3D场景

<script setup>import { ref, getCurrentInstance, onMounted, beforeUnmount } from vueimport * as BABYLON from babylonjs/core/Legacy/legacy // 全部引入import babylonjs/loaders // 模型加载loaderimport * as GUI from babylonjs/gui/2D // 交互组件const { pro…

面试经典150题——串联所有单词的子串(困难)

"Opportunities dont happen, you create them." ​ - Chris Grosser 1. 题目描述 2. 题目分析与解析 2.1 思路一——暴力求解 遇见这种可能刚开始没什么思路的问题&#xff0c;先试着按照人的思维来求解该题目。对于一个人来讲&#xff0c;我想要找到 s 字符串中…

AJAXJSON入门篇

AJAX&JSON 概念&#xff1a;AJAX(Asynchronous JavaScript And XML):异步的JavaScript和XML AJAX作用&#xff1a; 与服务器进行数据交换&#xff1a;通过AJAX可以给服务器发送请求&#xff0c;并获取服务器响应的数据 使用了AJAX和服务器进行通信&#xff0c;就可以使用H…

基于servlet编写的表白墙项目(后端代码 含数据库操作)

前提准备 项目前端代码和效果 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"…

java并发编程的艺术

java并发编程的艺术 第一章–并发的挑战 1。上下文切换 上下文切换是由于多任务操作系统需要管理多个线程或进程的并发 第二章—java并发机制的底层实现原理 java代码编译成字节码&#xff0c;然后被类加载器加载到jvm中&#xff0c;jvm执行&#xff0c;最终转换为汇编指令在cp…

C语言——枚举类型

&#x1f4dd;前言&#xff1a; 在之前的文章中我们已经讲解了自定义类型中的结构体类型和联合体类型&#xff0c;现在我们再充分学习一下C语言中的枚举类型&#xff1a; 1&#xff0c;什么是枚举类型 2&#xff0c;枚举类型的定义和变量的声明 3&#xff0c;对变量进行赋值 &a…

455. Assign Cookies(分发饼干)

题目描述 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff1b;并且每块饼干 j&#xff0c;都有一个…

每日OJ题_位运算⑦_力扣面试题 17.19. 消失的两个数字

目录 力扣面试题 17.19. 消失的两个数字 解析代码 力扣面试题 17.19. 消失的两个数字 面试题 17.19. 消失的两个数字 难度 困难 给定一个数组&#xff0c;包含从 1 到 N 所有的整数&#xff0c;但其中缺了两个数字。你能在 O(N) 时间内只用 O(1) 的空间找到它们吗&#xff…

OpenCompass 大模型评测

在浦语的大模型评测教程课程中&#xff0c;你可能需要完成的任务包括&#xff1a; 先修知识准备&#xff1a;这里你需要理解并掌握深度学习、NLP和PyTorch等相关知识。因为这些都是进行大模型评测的基础。模型理解&#xff1a;你需要对你要评测的模型有一个全面的理解&#xf…

FPGA实现ISP用于无人车、无人机配送的方案调研

查到一个always 奥唯思公司做的用FPGA实现ISP的方案&#xff0c;采用易灵思钛金16nm的FPGA Ti60F225&#xff0c;通过MIPI CSI RX采集图像传感器的数据&#xff0c;在FPGA内部经过一系列复杂的ISP运算后&#xff0c;再通过MIPI CSI TX将图像数据发送给后端。 一套完整的ISP&a…

【LeetCode】53. 最大子数组和(中等)——代码随想录算法训练营Day31

题目链接&#xff1a;53. 最大子数组和 题目描述 代码 测试用例 测试结果 测试结果 53. 最大子数组和 中等 相关标签 相关企业 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返…

uni-app生命周期 不说废话,直击重点 这篇就够了!

一、生命周期说明 uni-app的生命周期分为应用生命周期、页面生命周期、组件生命周期&#xff08;Vue的生命周期&#xff09; 二、应用生命周期 应用生命周期函数表&#xff1a; 函数名说明onLaunch初始化完成时触发&#xff08;全局只触发一次&#xff09;onShow启动或者从后…

【算法分析与设计】环形链表

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;算法分析与设计 ⛺️稳中求进&#xff0c;晒太阳 题目 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次…

实景剧本杀小程序:创新体验,沉浸式推理乐趣

随着科技的飞速发展&#xff0c;人们对于娱乐方式的追求也在不断升级。传统的桌面剧本杀游戏已经不能满足玩家的需求&#xff0c;他们渴望更加真实、刺激的游戏体验。正是这种需求推动下&#xff0c;实景剧本杀小程序应运而生&#xff0c;为玩家带来前所未有的推理乐趣。 实景…

【基础】第K大与第K小数

说明 给定一个长度为N(0< n< 10000)的序列&#xff0c;保证每一个序列中的数字a[i]是正整数 &#xff0c;编程要求求出整个序列中第k大的数字减去第k小的数字的值m&#xff0c;并判断m是否为质数。(0< k< n) 输入数据 第一行为2个数n&#xff0c;k&#xff08;…

ChatGPT高效提问—prompt常见用法(续篇八)

ChatGPT高效提问—prompt常见用法(续篇八) 1.1 对抗 ​ 对抗是一个重要主题,深入探讨了大型语言模型(LLM)的安全风险。它不仅反映了人们对LLM可能出现的风险和安全问题的理解,而且能够帮助我们识别这些潜在的风险,并通过切实可行的技术手段来规避。 ​ 截至目前,网络…

【Android】使用Android Studio打包APK文件

文章目录 1. 新建项目2. 打包生成APK3. 安装APK 1. 新建项目 打包APK之前&#xff0c;首先需要新建项目&#xff0c;有基础的可以跳过。 无基础的可以参考&#xff1a;使用Android Studio运行Hello World项目 2. 打包生成APK 1.找到Build -> Generate Signed Bundle or …