uva111:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=47

题意:看懂之后就是求两个串的最长公共子串。

题解:不过这里要注意一下,就是题目中假如说第一个数是2,表示事件1应该放在第二个位子,这样转化一下就可以了。以前集训的时候也搞过这样的东西,但是年代久远,往事早已随风而去。今天复习了一下,发现很简单的说,就是输出公共子序列的地方卡了一下。

 #include<iostream>
#include<string>
#include<cstring>
#include<cstdio>
using namespace std;
int c[][],b[][];//c[i][j]表示到a串第i位b串第j位所取得的最大长度,
char A[],B[];//b数组是用来记录的,便于DFS输出
int n,temp;
void PrintLCS(char *str1, int i, int j) {
if(i== || j==)
return ;
if(b[i][j]==){//表示原来的串中a,b是相同的
PrintLCS(str1, i-, j-);
printf("%c",str1[i-]);
}
else if(b[i][j]==)//表示a串的第i位没有取,跳过
PrintLCS(str1, i-, j);
else
PrintLCS(str1, i, j-);//表示b串的第j位没有取,跳过
}
int lcs(char* A,char * B){
int x=strlen(A);
int y=strlen(B);
memset(c,,sizeof(c));
memset(b,,sizeof(b));
for(int i=;i<=x;i++){
for(int j=;j<=y;j++){
if(A[i-]==B[j-]){
c[i][j]=c[i-][j-]+;
b[i][j]=;
}
else if(c[i-][j]>c[i][j-]){//表示a串的第i位没有取,跳过
c[i][j]=c[i-][j];
b[i][j]=;
}
else{
c[i][j]=c[i][j-];//表示b串的第j位没有取,跳过
b[i][j]=-;
}
}
}
//PrintLCS(A, x, y);
return c[x][y];
} int main(int argc, char const *argv[]){ scanf("%d",&n);
for(int i=;i<=n;i++){//把数字转化成字符串
scanf("%d",&temp);
A[temp-]='a'+i-;
}
while(~scanf("%d",&temp)){
B[temp-]='a';
for(int i=;i<=n;i++){//把数字转化成字符串
scanf("%d",&temp);
B[temp-]='a'+i-;
}
cout<<lcs(A,B)<<endl;
}
return ;
}

History Grading的更多相关文章

  1. UVa 111 - History Grading (by 最长公共子序列 )

     History Grading  Background Many problems in Computer Science involve maximizing some measure accor ...

  2. uva 111 History Grading(最长公共子序列)

    题目连接:111 - History Grading 题目大意:给出一个n 代表序列中元素的个数, 然后是一个答案, 接下来是若干个同学的答案(直到文件结束为止), 求出两个序列的最长公共子序列, 注 ...

  3. UVA 111 History Grading

    读题读了好久,其实就是在输入数据时要对数据的位置进行相应的改变 #include<iostream> #include<cstring> #include<cstdio& ...

  4. uva 111 - History Grading (dp, LCS)

    题目链接 题意:给N,第二行是答案,n个数c1---cn, 代表第一个的顺序是c1,第二个数顺序是c2; 下面每一行是学生的答案,格式同上. 注意:这个给的顺序需要处理一下,不能直接用. 思路:LCS ...

  5. UVa 111 History Grading (简单DP,LIS或LCS)

    题意:题意就是坑,看不大懂么,结果就做不对,如果看懂了就so easy了,给定n个事件,注意的是, 它给的是第i个事件发生在第多少位,并不是像我们想的,第i位是哪个事件,举个例子吧,4 2 3 1, ...

  6. uva 111 History Grading(lcs)

    题目描述 在信息科学中有一些是关于在某些条件限制下,找出一些计算的最大值. 以历史考试来说好了,学生被要求对一些历史事件根据其发生的年代顺序来排列.所有事件顺序都正确的学生无疑的可以得满分.但是那些没 ...

  7. UVA题目分类

    题目 Volume 0. Getting Started 开始10055 - Hashmat the Brave Warrior 10071 - Back to High School Physics ...

  8. 【转载】ACM总结——dp专辑

    感谢博主——      http://blog.csdn.net/cc_again?viewmode=list       ----------  Accagain  2014年5月15日 动态规划一 ...

  9. 一位学长的ACM总结(感触颇深)

    发信人: fennec (fennec), 信区: Algorithm 标 题: acm 总结 by fennec 发信站: 吉林大学牡丹园站 (Wed Dec 8 16:27:55 2004) AC ...

随机推荐

  1. OpenMP与C++:事半功倍地获得多线程的好处

    来源:IIEEG 01-28-2011 在并行计算领域有一个广为流传的笑话——并行计算是未来之事并且永远都是.这个小笑话几十年来一直都是对的.一种类似的观点在计算机架构社区中流传,处理器时钟速度的极限 ...

  2. Ubuntu中使用终端运行Hadoop程序

    接上一篇<Ubuntu Kylin系统下安装Hadoop2.6.0> 通过上一篇,Hadoop伪分布式基本配好了. 下一步是运行一个MapReduce程序,以WordCount为例: 1. ...

  3. 美丽的表格样式(使用CSS样式表控制表格样式)

    按照WEB2.0风格,设计了几个表格样式,希望大家喜欢. WEB2.0提倡使用div开布局,但不是要全然放弃使用表格,表格在数据展现方面还是不错的选择. 如今使用介绍使用CSS样式表来控制.美化表格的 ...

  4. [Ruby] Ruby Variable Scope

    Scope defines where in a program a variable is accessible. Ruby has four types of variable scope, lo ...

  5. SAP OTR 字段维护 更改SAP的字段翻译

    维护系统文本字段:SOTR_EDIT           TC:SE63 在SAP用户选择屏幕中,用鼠标选定一个栏位后按F1键,能够看到SAP对其详细解释,通常这样的解释文本分为两部分,一部分为标题, ...

  6. MyBatis报错

    1.错误描写叙述 2014-11-2 15:03:11 org.apache.catalina.core.StandardEngine start 信息: Starting Servlet Engin ...

  7. Mysql update error: Error Code: 1175. You are using safe update mode and you tried to update a table

    Mysql update error: Error Code: 1175. You are using safe update mode and you tried to update a table ...

  8. 中国剩余定理模板poj1006

    #include <cstdio> #include <iostream> #include <cstring> #include <cmath> #i ...

  9. android 安全退出应用程序的几种方法

    android 安全退出应用程序的几种方法 正常关闭应用程序: 当应用不再使用时,通常需要关闭应用,可以使用以下三种方法关闭android应用: 第一种方法:首先获取当前进程的id,然后杀死该进程.a ...

  10. angularjs项目中关于服务的应用

    /** *普通ajax请求公共服务 */ mainModule.factory('myService',function($http,$q){ var service = {}; var baseUr ...