动态规划 xcoj 1233 MCC同学拒绝重复代码
2016-05-22 22:32
274 查看
1233: MCC同学拒绝重复代码
时间限制: 1 Sec 内存限制: 16 MB提交: 56 解决: 13
标签
提交统计讨论版
题目描述
作为程序员,在工程中需要掌握的技能之一,就是避免代码的重复。 MCC同学开发了一套自动检测重复代码的软件,现在就剩下算法部分未完成了。 我们要求给出两个文件的内容,通过计算其中“最长公共子序列”的长度,来计算其代码重复度。 通过MCC牌黑科技,我们将文件的内容变成了一个整数数组,来便于进行比较。
输入
第一行两个整数n和m 第二行,第三行分别有n,m个整数,表示文件内容。 保证n,m<6000,保证文件内容数字<10000
输出
输出一行整数,表示最长公共子序列的长度。
样例输入
5 71 0 2 0 2 2 1 1 1 2 0 0
样例输出
3#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef long double LD;
const double PI = acos(-1.0);
///////////////////////////////
///////////////////////////////
int main(int argc, char**argv) {
ios_base::sync_with_stdio(0); cin.tie(0);
//freopen("input.txt", "r", stdin);?
//freopen("output.txt", "w", stdout);
////////////////////////////
int n,m;
while(cin>>n>>m){
int st[2][8000];
memset(st,0,sizeof(st));
int nl[8000];
int ml[8000];
for(int i=1;i<=n;i++){
cin>>nl[i];
}
for(int i=1;i<=m;i++){
cin>>ml[i];
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(nl[i]==ml[j]){
st[i&1][j]=st[(i-1)&1][j-1]+1;
}
else{
st[i&1][j]=max(st[i&1][j-1],st[(i-1)&1][j]);
}
}
}
cout<<st[n&1][m]<<endl;
}
////////////////////////////
//system("pause");
return 0;
}
//END
/**************************************************************
Problem: 1233
User: 2015217298
Language: C++
Result: 正确
Time:389 ms
Memory:1544 kb
****************************************************************/
相关文章推荐
- xcoj1009 密码
- xcoj 1002 回文数
- xcoj 1203 F.铺设电缆
- xcoj 1227 电梯
- 动态规划 xcoj 1150 校门外的树 LV.4
- 并查集 xcoj 1234 ZJTZYRC筛offer
- 作业:C++作业6
- Python处理多个客户端连接---多路复用选择服务器
- C#知识点-委托
- spring mvc 异常统一处理方式
- 用遗传算法走迷宫 [Java语言实现]
- C++第六次实验(数组操作)
- Java中获取路径的方法
- 代码重构--大话重构
- c++上机作业6
- c++中怎么求二维数组的长度
- c++上机实验6项目三
- php类型转换
- Python爬虫开发
- 《UNIX环境高级编程》(第三版第一章)