【2014广州市选day1】JZOJ2020年9月12日提高B组T4 字符串距离

题目

Description

给出两个由小写字母组成的字符串 X 和Y ,我们需要算出两个字符串的距离,定义如下:

1)我们可以在字符串的头、尾、中间插入若干空格,组成一个新的扩展串

2)对X扩展成扩展串X1,对Y扩展成扩展串Y1,并且令X1和Y1具有相同的长度

3)定义X1、Y1的距离为每个对应的字符的距离之和,其中两个空格的距离为0,两个非空格字符的距离为其ASCII码之差的绝对值,一个空格字符到任意非空格字符的距离为K

4)对于字符串X、Y,必然存在两个等长的扩展串X1、Y1,使得X1、Y1的距离达到最少,我们将这一距离定义为字符串X、Y的距离

Input

输入为三行,前两行是30位以内的由小写字母组成的字符串, 第三行是整数K(0<=K<=30)

Output

输出一行为一个整数,代表两个字符串的距离

Sample Input

cmo

snmn

2

Sample Output

7

题解

题意

给出两个字符串和字符串距离的定义

求这两个字符串的最短距离

分析

考虑\(DP\)

设\(f[i][j]\)为第一个字符串到了第\(i\)个位置,第二个字符串到了第\(j\)个位置

初始化:

\(f[i][0]=i*k,f[0][i]=k*i\)

那么就有

\(f[i][j]=min\begin{cases}f[i-1][j-1]+abs(a[i]-b[j])\\f[i-1][j]+k\\f[i][j-1]+k\end{cases}\)

Code

#include<bits/stdc++.h>
using namespace std;
int l1,l2,k,a[35],c[35],f[35][35];
char ch;
int main()
{
freopen("distance.in","r",stdin);
freopen("distance.out","w",stdout);
ch=getchar();
while (ch<'a'||ch>'z') ch=getchar();
while (ch>='a'&&ch<='z')
{
a[++l1]=ch-'a'+1;
ch=getchar();
}
while (ch<'a'||ch>'z') ch=getchar();
while (ch>='a'&&ch<='z')
{
c[++l2]=ch-'a'+1;
ch=getchar();
}
while (ch<'0'||ch>'9') ch=getchar();
while (ch>='0'&&ch<='9')
{
k=(k<<1)+(k<<3)+(ch-'0');
ch=getchar();
}
for (int i=1;i<=l1;++i)
f[i][0]=k*i;
for (int i=1;i<=l2;++i)
f[0][i]=k*i;
for (int i=1;i<=l1;++i)
for (int j=1;j<=l2;++j)
f[i][j]=min(f[i-1][j-1]+abs(a[i]-c[j]),min(f[i-1][j],f[i][j-1])+k);
printf("%d\n",f[l1][l2]);
fclose(stdin);fclose(stdout);
return 0;
}

最新文章

  1. C#发送邮箱
  2. 【C#进阶】多播委托和委托数组像是一回事~
  3. Xamarin跨平台移动开发解决方案
  4. 以多个实例方式打开Notepad++
  5. 在Fedora8上配置Apache Httpd
  6. mysql 操作指令笔记
  7. XMLHelper 类
  8. python爬虫下载youtube单个视频
  9. Jquery读取URL参数
  10. HDOJ1232 并查集
  11. PHP日志切割shell
  12. java中printf()方法简单用法
  13. Lepus(天兔)监控MySQL部署
  14. Lucene 个人领悟 (二)
  15. java的数组和arraylist
  16. Oracle 12c的可插拔数据库PDB
  17. WinPcap权威指南(三):ARP协议
  18. Where is virtualenvwrapper.sh after pip install?
  19. (转)Unity中武器与人物的碰撞检测
  20. [Xamarin] 製作吐司(Toast)以及圖文並茂的Toast (转帖)

热门文章

  1. 线上Java程序占用 CPU 过高,请说一下排查方法?
  2. springboot + post 中文乱码
  3. 2020提高组模拟赛7 StormWind
  4. How to refresh datasource args caller[X++]
  5. python爬虫构建代理ip池抓取数据库的示例代码
  6. python_os_shutil_获取文件夹下所有文件的大小
  7. 面试官:Redis 主从复制时网络开小差了怎么整?
  8. REDHAT 7.5beta 新推出的VDO功能
  9. 重闯Sqli-labs关卡第二天(5关)
  10. 使用phpExcel读取excel文件