博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字符串暴力枚举子序列求LCS
阅读量:6294 次
发布时间:2019-06-22

本文共 1603 字,大约阅读时间需要 5 分钟。

题意:

求n个串里的LCS,长度相同时按照字典序排序

solution:

断环为链,二进制枚举子序列,压入vector,按照字典序排序

把出现次数为n的,压入第二个vector

输出最长的第二个vector里最长的序列

1 #include
2 #define endl '\n' 3 using namespace std; 4 bool cmp(string a,string b) 5 { 6 return a.size()
> n) {12 string s;13 vector
a;14 if(n == 1) {15 cin >> s;16 int sz= s.size();17 vector
xx;18 s+=s;19 // cout << s << endl;20 for(int i = 0; i < sz;i++) xx.push_back(s.substr(i,sz));//截取起点为i长度为sz的字串 21 sort(xx.begin(),xx.end());22 for(int i = 0; i < xx.size(); i++) cout <
<
> s;28 int sz = s.size();29 s += s;30 vector
b;31 for(int j = 0; j < sz; j++){ //断环为链 32 for(int k = 1; k < (1 << sz); k++) { //用枚举子集来表示序列 33 string t;34 for(int p = 0; p < sz; p++) {35 if(k & (1 << p)) {36 t += s[j + p];37 }38 }39 //cout << t << endl;40 b.push_back(t);41 }42 //cout << endl;43 }44 sort(b.begin(),b.end());45 b.erase(unique(b.begin(),b.end()),b.end());//每一个串的子序列按照字典序排序并去重 46 for(int j = 0; j < b.size(); j++) { //把每一个串的子序列加入总的字符串里 47 a.push_back(b[j]);48 }49 }50 sort(a.begin(),a.end());//按照所有串的子序列 51 // for(int i = 0; i < a.size(); i++) cout << a[i] <
c,d;54 for(int i = 1; i < a.size(); i++) {55 if(a[i] == a[i- 1]) ct++;56 else ct = 1;57 if(ct == n) c.push_back(a[i]),maxx=max(maxx,(int)a[i].size());//n个串里的公共子序列 58 }59 // for(int i = 0; i < c.size(); i++) cout << c[i] <
View Code

 

转载于:https://www.cnblogs.com/klaycf/p/9692037.html

你可能感兴趣的文章
docker centos环境部署tomcat
查看>>
JavaScript 基础(九): 条件 语句
查看>>
Linux系统固定IP配置
查看>>
配置Quartz
查看>>
Linux 线程实现机制分析
查看>>
继承自ActionBarActivity的activity的activity theme问题
查看>>
设计模式01:简单工厂模式
查看>>
项目经理笔记一
查看>>
Hibernate一对一外键双向关联
查看>>
mac pro 入手,php环境配置总结
查看>>
MyBatis-Plus | 最简单的查询操作教程(Lambda)
查看>>
rpmfusion 的国内大学 NEU 源配置
查看>>
spring jpa 配置详解
查看>>
IOE,为什么去IOE?
查看>>
Storm中的Worker
查看>>
dangdang.ddframe.job中页面修改表达式后进行检查
查看>>
Web基础架构:负载均衡和LVS
查看>>
Linux下c/c++相对路径动态库的生成与使用
查看>>
SHELL实现跳板机,只允许用户执行少量允许的命令
查看>>
SpringBoot 整合Redis
查看>>