s1

算法第三章上机实践报告,编辑距离问题

偶尔善良 提交于 2019-12-01 17:29:32
实践报告任选一题进行分析。内容包括: 实践题目 问题描述 算法描述 算法时间及空间复杂度分析(要有分析过程) 心得体会(对本次实践收获及疑惑进行总结) 1.实践题目 7-3 编辑距离问题 (30 分) 2.问题描述 设A和B是2个字符串。要用最少的字符操作将字符串A转换为字符串B。这里所说的字符操作包括 (1)删除一个字符; (2)插入一个字符; (3)将一个字符改为另一个字符。 将字符串A变换为字符串B所用的最少字符操作数称为字符串A到 B的编辑距离,记为d(A,B)。 对于给定的字符串A和字符串B,计算其编辑距离 d(A,B)。 输入格式: 第一行是字符串A,文件的第二行是字符串B。 提示:字符串长度不超过2000个字符。 输出格式: 输出编辑距离d(A,B) 输入样例: 在这里给出一组输入。例如: fxpimu xwrs 输出样例: 在这里给出相应的输出。例如: 5 3.算法描述 这道题是类似于最长子串匹配的题目,不过要更深入一些,首先令m[a][b]为 字符串s1下标从0到a-1组成的字符串 与 字符串从s2下标0到b-1组成的字符串的最优编辑距离,接着用动态规划的思想分析m[a][b]与它的子问题是什么关系。通过分析,我们能分析出m[a][b]的表达式: 当s1[a-1] = s2[b-1] 当字符串s1[a-1]和s2[b-1]相等时,则不用对末位s1[a-1]和s2

合并回文子串

不打扰是莪最后的温柔 提交于 2019-12-01 07:08:06
链接: https://ac.nowcoder.com/acm/problem/13230 来源:牛客网 题目描述 输入两个字符串A和B,合并成一个串C,属于A和B的字符在C中顺序保持不变。如"abc"和"xyz"可以被组合成"axbycz"或"abxcyz"等。 我们定义字符串的价值为其最长回文子串的长度(回文串表示从正反两边看完全一致的字符串,如"aba"和"xyyx")。 需要求出所有可能的C中价值最大的字符串,输出这个最大价值即可 输入描述: 第一行一个整数T(T ≤ 50)。 接下来2T行,每两行两个字符串分别代表A,B(|A|,|B| ≤ 50),A,B的字符集为全体小写字母。 输出描述: 对于每组数据输出一行一个整数表示价值最大的C的价值。 示例1 输入 复制 2 aa bb a aaaabcaa 输出 复制   4   5 设dp[i][j][k][l],然后将所有会出现的状态枚举出来即:s1[i]=s1[j],s2[k]=s2[l],s1[i]=s2[l],s2[k]=s1[k].4种状态枚举出来后,再将每种可能出现的字符串由小判断到大,即:先从只有s1的字符串,并且只有1个字符,在到2个字符....等一直到s1的最后一个字符,在尝试的把s2里的第一个字符带入,在接着一个一个的列出和判断,从而达到解决子问题联系到父问题,以下治上的效果(本人连续写了好几道动态规划

6、short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?-Java面试题答案

久未见 提交于 2019-12-01 02:17:04
先说一下Java的基本数据类型转换规则,大的数据类型转换为小的数据类型需要强制转换,反之可以自动转换。 赋值表达式等号两侧的转换的规则是右侧的向左侧的看齐,即右侧表达式要转换到和左边的类型一样。 第一题:short s1 = 1; s1 = s1 + 1; 错! s1 + 1,s1是short类型,1是int型,s1会自动转换为int型的1,与1相加后,得到int型的2,要向左侧的short类型的s1看齐,即需要通过强制类型转换。正确写法:s1 = (short) (s1 + 1); 第二题:short s1 = 1; s1 += 1; 正确! 执行s1+=1;其实执行的是s1 = (short) (s1 + 1); 其中会有一个强制转换的过程。 第三题:short s1=1,s2=1;short s3=s1+s2; 错误!这里是编译器从数据安全方面考虑,如果s1和s2都是较大的short类型数,可能会导致溢出,所以会要求强制转换到int。正确写法:short s3 = (int)s1 + s2; 来源: https://www.cnblogs.com/helenwq/p/11647569.html

【原生】用原型链继承的方式写一个类和子类,继承的关系的理解,原型的理解

风流意气都作罢 提交于 2019-11-30 20:57:47
用原型链继承的方式写一个类和子类,继承的关系的理解,原型的理解 function Person(name,age){ this.name=name; this.age=age; } Person.prototype.study=function(){ return "学习" } function Student(class_,name,age){ this.class_=class_; this.name=name; this.age=age; } var p1=new Person() console.log(p1) Student.prototype=new Person(); var s1=new Student("二班","黎明","16"); console.log(s1) console.log(s1.name,s1.age,s1.class_,s1.study()); 来源: https://www.cnblogs.com/yuanjili666/p/11639828.html

基本数据类型

∥☆過路亽.° 提交于 2019-11-30 06:34:30
字符串 字符串定义和初始化 字符串是一个个字符组成的有序的序列,是字符的集合。 使用单引号、双引号、三引号引住的字符序列,字符串是不可变对象,同时,从Python3起,字符串默认就是 Unicode类型。 字符串访问——索引和切片 字符串支持使用索引访问,索引也就是下标。下标从0开始,同时支持负向索引。索引不能越界,越界会报错。 s1 = "abcdefghigklmnopqrst" print(s1[0]) # 获取第0个 print(s1[1]) 结果为: a b print(s1[-1]) # -1 表示倒数. print(s1[-2]) # 倒数第2个 结果为: t s print(s1[30]) 结果为: IndexError Traceback (most recent call last) <ipython-input-28-dbf7bde6c69e> in <module> ----> 1 print(s1[30]) IndexError: string index out of range a = "abc"#有序的字符集合 for c in a: print(c) print(type(c)) 结果为: a <class 'str'> b <class 'str'> c <class 'str'> s = "abcd"#不可变对象 print(s[3]) s[3

day010学习笔记

六眼飞鱼酱① 提交于 2019-11-29 20:42:43
基础数据类型补充-方法(不常用) int bit_length() 求数字二进制最大位数 a = 25 #11001 print(a.bit_length()) #5 str capitalize() 首字母大写 s = "alsx hahah" s1 = s.capitalize() #首字母大写 print(s1) #Alsx hahah title() 每个单词首字母大写(可以空格,逗号等字符分隔单词) s = "alsx hahah" s1 = s.title() print(s1) #Alsx Hahah index(元素名 ) 通过元素查找索引,返回第一个查到的元素 的索引,查不到报错 s = "alsx hahah" s1 = s.index("h") print(s1) #5 find(元素名) 通过元素查找索引,查找不到时返回-1 join(列表,元组) 使用链接符将元组列表转换为字符串 center(number) 设置居中 s1 = s.center(20) #居中,一共20个 print(s1) # alsx hahah s1 = s.center(20,"-") #居中,填充,一共20个,可用符号代替空格 print(s1) #-----alsx hahah----- format() 格式化 s = "alsx{}ha{}hah" s1 = s

最短编辑距离

試著忘記壹切 提交于 2019-11-29 12:32:35
场景 在搜索引擎项目中,我用到了最短编辑距离算法,用于对用户输入的查询进行纠错,从而优化查询结果。比如说,我们在输入英文单词的时候,由于疏忽或者记忆不准确,会有拼写错误的情况。以单词beautiful 为例,假设我们在搜索引擎中输入beauitful(我故意拼错了),看看会发生什么。 如下图所示,虽然我把这个单词拼错了,但是查询结果提示“including results for beautiful”,也就是说,它似乎知道我的查询输入拼写错误,并根据某种算法,给我推荐了一个与之最近似的单词(大概率就是本应正确拼写的单词)。在这里,就用到了最短编辑距离算法。这个场景,也称为模糊搜索。 最短编辑距离 什么是最短编辑距离呢?假定有两个字符串s1和s2,允许对字符串进行以下三种操作: 1. 插入一个字符 2. 删除一个字符 3. 替换一个字符 将字符串s1转换成字符串s2的最少操作次数就是字符串s1和字符串s2之间的最短编辑距离。两个字符串的最短编辑距离最短,意味着两个字符串越相似。 例1 :s1 = "geek",s2 = "gesek" 我们只需要在s1中插入一个字符,就可以把s1转换为s2,因此,这两个字符串的最短编辑距离就是1 例2:s1 = "cat",s2 = "cut" 我们只需要在s1中替换一个字符,就可以把s1转换为s2,因此,这两个字符串的最短编辑距离就是1 例3:s1

Python日记,

牧云@^-^@ 提交于 2019-11-29 04:59:19
---恢复内容开始--- 1、字符串   2、数字  3、列表  4、元组  5、字典  6、集合 可变不可变:   可变:列表、字典   不可变:字符串、数字、元组 访问顺序:   直接访问:数字   顺序访问:字符串、列表、元组   映射:字典 存放元素个数:   容器型:列表、元组、字典、   原子:数字、字符串 1、 2、 3、 4 5、 6、集合:不同元素、无序、不可变类型 {1,2,3}   s = set('hello') >>> s={'h', 'e', 'l', 'o'}     s = set( ['alex' ,'alex' , 'sb']) >>>s = { 'sb' , 'alex' }   集合的内置方法   1,add   s.add(...) 添加元素   2,clear  s.clear() 清空集合   3,copy  s.copy() 赋值集合   4,pop   s.pop() 随即删除   5,remove s.remove(...) 删除指定内容,没有内容会报错   6,discard s.discard(...)删除指定内容,没有内容不会报错   7,intersection s.intersection( s1) == s & s1 求交集   8,union   s.union(s1) == s | s1 求并集   9

学Python的第六天

折月煮酒 提交于 2019-11-29 02:42:38
今天发愤图强,死学Python!!!! 为此小编还买了自己喜欢的McPython! 从小老师就说兴趣是最好的老师,所以呢买这本书是想通过我的世界这款游戏来提高自己的学习兴趣!!! 当然也有私心啦.... #!/usr/bin/env python # -*- coding:utf8 -*- #布尔值 v = 1==1 print (v) a = 1 != 2 print (a) """ 先计算括号内 **** True OR ==> True True AND ==> 继续走 False OR ==> 继续走 False AND==> False """ user = "alex" pwd = "123" v = user == 'alex' and (pwd == "123" or 1 == 1) and pwd == "1234" print(v) #算数运算=赋值运算 count = 0 number = 0 count = count + 1 number += 1 print (count==number) #结果是真实值 #算数运算 a = 10 * 10 print(a) #赋值运算 b = 0 b = b + 1 b += 1 print(b) #结果是布尔值 #比较运算 c = 1 > 5 c print(c) #逻辑运算 d = 1>6 or 1 == 1

python-pandas基础数据结构(Series)

本秂侑毒 提交于 2019-11-29 00:37:06
Series (带有标签的一维数组) 一、Series的创建方法 [注]import numpy as np import pandas as pd 都省略了。 1、通过字典创建 dic = {'a':1,'b':2,'c':3,'1':'hello','2':'python','3':[1,2]} s = pd.Series(dic) print(s,type(s)) #运行结果 1 hello 2 python 3 [1, 2] a 1 b 2 c 3 dtype: object <class 'pandas.core.series.Series'> 2、通过数组(ndarray)创建 参数index:是Series的标签 参数name: 是Series的名称,没有的话默认为None。可以用rename()来更改,更改后生成新的Series,不改变原来的Series s = pd.Series(np.random.rand(5),index = list('abcde'),name = 'test') print(s,type(s)) #运行结果 a 0.384840 b 0.202776 c 0.646176 d 0.215777 e 0.605895 Name: test, dtype: float64 <class 'pandas.core.series.Series'>