顺序对齐

http://zsyz.openjudge.cn/dp/18/
总时间限制: 
1000ms

内存限制: 
102400kB
描述

考虑两个字符串右对齐的最佳解法。例如,有一个右对齐方案中字符串是AADDEFGGHC和ADCDEGH。

AAD_DEFGGHC

ADCDE__GH_

每一个数值匹配的位置值2分,一段连续的空格值-1分。所以总分是匹配点的2倍减去连续空格的段数,在上述给定的例子中,6个位置(A,D,D,E,G,H)匹配,三段空格,所以得分2*6+(-1)*3=9,注意,我们并不处罚左边的不匹配位置。若匹配的位置是两个不同的字符,则既不得分也不失分。

请你写个程序找出最佳右对齐方案。

输入
输入文件包含两行,每行一个字符串,最长50个字符。字符全部是大字字母。
输出
一行,为最佳对齐的得分。
样例输入
AADDEFGGHC
ADCDEGH
样例输出
9

f[i][j] 表示匹配到第一个串前i个,第二个串前j个的最大得分有4中决策: 匹配 f[i][j]=f[i-1][j-1]+2第一个串位置i加空格: f[i][j]=max(f[i][j],f[k][j]-1) 1<k<i第二个串位置j加空格: f[i][j]=max(f[i][j],f[i][k]-1) 1<k<j不匹配但不空格 f[i][j]=max(f[i][j],f[i-1][j-1])

题目中不处罚左边不匹配位置,若左边都不匹配,如果处罚,f为负数但因为初始值为0,取大还是0,相当于不处罚
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char a[51],b[51];
int  f[51][51],l1,l2;
int main()
{
    scanf("%s%s",a+1,b+1);
    l1=strlen(a+1); l2=strlen(b+1);
    for(int i=1;i<=l1;i++)
     for(int j=1;j<=l2;j++)
      {
           if(a[i]==b[j]) f[i][j]=f[i-1][j-1]+2;
           for(int k=1;k<i;k++) f[i][j]=max(f[i][j],f[k][j]-1);
           for(int k=1;k<j;k++) f[i][j]=max(f[i][j],f[i][k]-1);
           f[i][j]=max(f[i][j],f[i-1][j-1]);
      }
    printf("%d",f[l1][l2]);
}
 
时间: 2024-08-03 12:50:07

顺序对齐的相关文章

c/c++界面编程

本帖计划从四个大的方面来讲 这四个方面是 窗口类.文件操作类.网络类.数据库类. 都是时下流行的编程必备技术 也是软件开发者 必须掌握的技术.中间以实例讲解 逐步学习 相信大家看完后 会有很大的提高的. 第一章 窗口类程序的编写 这一章就先来讲解下窗口类程序的编写.因为现在程序没有界面 就像人没有脸面一样 而且好的界面更能吸引人. 从基本的界面开始 相信能给大家指明出一条路的 使大家很容易地掌握窗口序的编写.其实界面设计利用VC 6.0 的 MFC 很容易地制作出来.这里从底层开始写代码来写界面

CreateWindowEx和CreateWindow的区别

CreateWindowEx 函数功能:该函数创建一个具有扩展风格的重叠式窗口.弹出式窗口或子窗口,其他与 CreateWindow函数相同.关于创建窗口和其他参数的内容,请参看CreateWindowEx. 函数原型:HWND CreateWindowEx(DWORD dwExStle,LPCTSTR IpClassName,LPCTSTR lpWindowName,DWORD dwStyle,int x,int y,int nWidth,int nHeight,HWND hWndParent

Cassandra数据分布之5分区器

分区器决定了数据在集群中节点的分布.分区器的功能是通过为每一行数据的分区键(partion key)分配一个令牌(token),然后通过这个令牌(token)将数据保存在cassandra集群中. Cassandra提供了如下如下4种分区器.Cassandra中的实现如下图: ByteOrderedPartitioner:有序分区器,它将键值数据看做是裸字节. LocalPartitioner:对分区键未做任何处理的分区器. Murmur3Partitioner:基于MurmurHash哈希算法

一个简单的通讯录。。。

上课的时候老师布置了一个作业,利用结构体实现一个简单地通讯录,这可是我们大一的时候学期末的课设题目啊,不过还好现在的水平比之前高了那么一点.. 实现一个通讯录: 通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名.性别.年龄.电话.住址 提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联系人信息 4. 修改指定联系人信息 5. 显示所有联系人信息 6. 清空所有联系人 7. 以名字排序所有联系人 这个是通讯录的主要功能. 这个比较大,所以我们写在三个文件里.

使用WIN32汇编语言实现一个基本windows窗体的过程分析

一个常规的windows窗体一般都是一些一样的构造.你假设想要更改一些个性化的设置,你能够在这个一般的模板伤添砖加瓦.构造自己比較喜欢的类型.下边就分析一下一般的windows窗体的一般模板. 一. 首先看一下一般的windows窗体都包括什么框架(NO picture you say a J8.....上图上图)例如以下(罗云斌win32汇编书中92页的一张图): 该图简单的描写叙述了一个主要的窗体的框架. 下图是我们分析的第一个窗体的执行演示样例截图: 这个窗体较为简单.可是包括了窗体的基本

ABAP_ALV_Function方式与OO方式(较为简单、普通的ALV)

目录 一.ALV简介 1.简介 2.ALV_GRID介绍 3.其它描述 二.开发ALV的基本流程 三.ALV相关开发细节 1.标准ALV与对象ALV的共同开发细节 2.标准ALV开发相关细节 3.对象ALV开发相关细节 四.注意事项 五.附属信息 1.ALV快捷工具栏功能说明(如下图) 2.类型SLIS_FIELDCAT_ALV常用参数说明 3.类型SLIS_T_SORTINFO_ALV常用参数说明 4.类型SLIS_LAYOUT_ALV常用参数说明 5.类型SLIS_T_EVENT常用参数说明

网页设计基础介绍

最基础的网页设计,就是给你一个图片你做成一个网页,个人网页的功底不是很高,偏向于后台逻辑处理,偶尔会看些前端构造首先先认识一下网页的一些相关知识: 一般的,现在一个html网页一般包含html文件,css文件,js文件,img文件这几个部分css文件,全名叫成叠样式表稍后会说说,js呢,这个文章暂时先不说现在说说网页静态网页htm,html 最早的静态网页文本,目前也常见非静态网页 asp 微软的动态网页文件php php的文档格式,参看www.php.net,常用,比asp流行jsp sun公

CreateWindowEx(摘自搜狗百科)

函数功能 该函数创建一个具有扩展风格的层叠式窗口.弹出式窗口或子窗口 函数参数 dwExStyle 指定窗口的扩展风格.该参数可以是下列值: WS_EX_NODRAG:防止窗口被移动 WS_EX_ACCEPTFILES:指定以该风格创建的窗口接受一个拖拽文件. WS_EX_APPWINDOW:当窗口可见时,将一个顶层窗口放置到任务条上. WS_EX_CLIENTEDGE:指定窗口有一个带阴影的边界. WS_EX_CONTEXTHELP:在窗口的标题条包含一个问号标志.当用户点击了问号时,鼠标光标

字节对齐

今天我们总结在C++和C语言中让我们头疼的字节对齐问题: 一.首先来看什么是字节对其? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任 何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐. 二: 那么问题就来了为什么要字节对其?以及字节对其的作用? 各个硬件平台对存储空间的处理上有很大的不同.一些平台对某些特定类型的数据只能从某些特定地址开始存