#include<iostream>
#include <fstream>
#include <deque>
#include<string>
#include<algorithm>
#include "FEtool.h"
using std::cout;
using std::endl;
struct Line {
std::string str_;
operator std::string const&()const {return str_;}
};
std::istream &operator>>(std::istream &is, Line &l)
{
std::getline(is, l.str_,'\n');
return is;
}
bool operator==(Line const&l,std::string const&str)
{
return l.str_==str;
}
using FEtool::LCS_Calculate;
using FEtool::SectionCommon;
char one[]="hello world";
char two[]="word";
char three[]="1233434printSection(SectionCommon";
char four[]=" using printSection(SectionCommon::Scpeard";
class PrintSection{
std::ostream &cout_;
public:
PrintSection(std::ostream& o):cout_(o){}
void operator()(SectionCommon const&sec)
{
cout_<<" left begin:"<<sec.L_begin;
cout_<<" right begin:"<<sec.R_begin;
cout_<<" same counts:"<<sec.count;
cout_<<endl;
}
};
void TestString()
{
std::deque<FEtool::SectionCommon> section;
//FEtool:: EmptyContainer section;
cout<<"LCS:"<<LCS_Calculate(one,one+sizeof(one)/sizeof(char),
two,two+sizeof(two)/sizeof(char),section);
std::for_each(section.begin(),section.end(),PrintSection(cout));
cout <<"section size:"<<section.size();
cout<<endl;
cout<<"LCS:"<<LCS_Calculate(three,three+sizeof(three)/sizeof(char),
four,four+sizeof(four)/sizeof(char),section);
std::for_each(section.begin(),section.end(),PrintSection(cout));
cout <<"section size:"<<section.size();
}
void TestFile()
{
std::ifstream leftFile("WinGDI_1.h");
std::ifstream rightFile("WINGDI_2.H");
if(!leftFile.is_open()||!rightFile.is_open())return;
std::deque<FEtool::SectionCommon> section;
// FEtool:: EmptyContainer section;
std::deque<std::string> FileLineText;
std::istream_iterator<Line> fbegin(rightFile);
std::istream_iterator<Line> fend;
std::copy(fbegin,fend,std::back_inserter(FileLineText));
cout<<"LCS:"
<<LCS_Calculate(std::istream_iterator<Line>(leftFile),
fend,FileLineText, section);
std::for_each(section.begin(),section.end(),PrintSection(cout));
cout <<"section size:"<<section.size();
cout<<endl;
}
int main(){
//TestString();
TestFile();
}
没有合适的资源?快使用搜索试试~ 我知道了~
最长公共子序列的泛型算法
共11个文件
h:3个
txt:2个
cbp:1个
4星 · 超过85%的资源 需积分: 4 24 下载量 115 浏览量
2010-03-24
13:22:46
上传
评论
收藏 91KB ZIP 举报
温馨提示
经典的公共子序列算法需要两个序列的长度已知.而且通常用于计算字符串的公共子序列. 我实现的算法剥离了一些易变部分,使得算法极度可适配.能用于字符串公共子序列计算和文件diff计算.理论上能用于任何具备相似特征的两个序列的公共子序列计算. vs2008 codeblocks均可编译运行
资源推荐
资源详情
资源评论
收起资源包目录
LCS.zip (11个子文件)
LCS
main.cpp 5KB
FEtool.suo 12KB
WINGDI_2.H 168KB
FEtool.vcproj 4KB
right.txt 2KB
left.txt 2KB
WinGDI_1.h 180KB
FEtool.exe 26KB
FEtool.sln 877B
FEtool.cbp 1KB
FEalgorithm.h 8KB
共 11 条
- 1
资源评论
- xiaoyaole32014-12-01嘛 东西还是很好的。。。但是貌似不是自己想要要的。。。可以供新手学习
- baidu_232141352015-05-06值得学习借鉴,看后有帮助!
FireEmissary
- 粉丝: 3
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功