题意:

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

solution:

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

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

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

 #include<bits/stdc++.h>
#define endl '\n'
using namespace std;
bool cmp(string a,string b)
{
return a.size()<b.size();
}
int main() {
// ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int n;
while(cin >> n) {
string s;
vector<string>a;
if(n == ) {
cin >> s;
int sz= s.size();
vector<string>xx;
s+=s;
// cout << s << endl;
for(int i = ; i < sz;i++) xx.push_back(s.substr(i,sz));//截取起点为i长度为sz的字串
sort(xx.begin(),xx.end());
for(int i = ; i < xx.size(); i++) cout <<xx[i]<<endl;
cout << xx[] << endl;continue;
} for(int i = ; i < n; i++) {
cin >> s;
int sz = s.size();
s += s;
vector<string>b;
for(int j = ; j < sz; j++){//断环为链
for(int k = ; k < ( << sz); k++) {//用枚举子集来表示序列
string t;
for(int p = ; p < sz; p++) {
if(k & ( << p)) {
t += s[j + p];
}
}
//cout << t << endl;
b.push_back(t);
}
//cout << endl;
}
sort(b.begin(),b.end());
b.erase(unique(b.begin(),b.end()),b.end());//每一个串的子序列按照字典序排序并去重
for(int j = ; j < b.size(); j++) {//把每一个串的子序列加入总的字符串里
a.push_back(b[j]);
}
}
sort(a.begin(),a.end());//按照所有串的子序列
// for(int i = 0; i < a.size(); i++) cout << a[i] <<endl;
int ct = , maxx = ;
vector<string>c,d;
for(int i = ; i < a.size(); i++) {
if(a[i] == a[i- ]) ct++;
else ct = ;
if(ct == n) c.push_back(a[i]),maxx=max(maxx,(int)a[i].size());//n个串里的公共子序列
}
// for(int i = 0; i < c.size(); i++) cout << c[i] <<endl;
if(c.size() == ) {
cout << << endl; continue;
}
for(int i = ; i < c.size(); i++) {
if(c[i].size() == maxx){
cout<<c[i]<<endl;break;
}
}
}
return ;
}

字符串暴力枚举子序列求LCS的更多相关文章

  1. POJ 3080 Blue Jeans (字符串处理暴力枚举)

    Blue Jeans  Time Limit: 1000MS        Memory Limit: 65536K Total Submissions: 21078        Accepted: ...

  2. Codeforces Round #410 (Div. 2)(A,字符串,水坑,B,暴力枚举,C,思维题,D,区间贪心)

    A. Mike and palindrome time limit per test:2 seconds memory limit per test:256 megabytes input:stand ...

  3. 【转】最长公共子序列(LCS),求LCS长度和打印输出LCS

    求LCS的长度,Java版本: public static int LCS(int[]a,int[] b) { int [][]c=new int[a.length+1][b.length+1]; f ...

  4. UVA 10635 Prince and Princess—— 求LCS(最长公共子序列)转换成 求LIS(最长递增子序列)

    题目大意:有n*n个方格,王子有一条走法,依次经过m个格子,公主有一种走法,依次经过n个格子(不会重复走),问他们删去一些步数后,重叠步数的最大值. 显然是一个LCS,我一看到就高高兴兴的打了个板子上 ...

  5. 聪明的暴力枚举求abcde/fghij=n

    目录 前言 一.题目 二.暴力初解 三.优化再解(借鉴bitmap) 总结 前言 枚举如何聪明的枚举?那就是优化啦!下面梳理之前做过的一个暴力枚举的题,想了蛮久最后把它优化了感觉还不错,算是比较聪明的 ...

  6. Algorithm --> 最长公共子序列(LCS)

      一.什么是最长公共子序列     什么是最长公共子序列呢?举个简单的例子吧,一个数列S,若分别是两个或多个已知序列的子序列,且是所有符合条件序列中最长的,则S称为已知序列的最长公共子序列. 举例如 ...

  7. 最长公共子序列(LCS)、最长递增子序列(LIS)、最长递增公共子序列(LICS)

    最长公共子序列(LCS) [问题] 求两字符序列的最长公共字符子序列 问题描述:字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字 ...

  8. 【转】动态规划之最长公共子序列(LCS)

    [原文链接]最长公共子序列(Longest Common Subsequence,简称 LCS)是一道非常经典的面试题目,因为它的解法是典型的二维动态规划,大部分比较困难的字符串问题都和这个问题一个套 ...

  9. 【线型DP模板】最上上升子序列(LIS),最长公共子序列(LCS),最长公共上升子序列(LCIS)

    BEGIN LIS: 一个数的序列bi,当b1 < b2 < … < bS的时候,我们称这个序列是上升的.对于给定的一个序列(a1, a2, …, aN),我们可以得到一些上升的子序 ...

随机推荐

  1. vue学习(10)-vue-resource

    下载:cnpm i vue-resource --save 在main.js导入包:import VueResource from 'vue-resource' 安装:Vue.use(VueResou ...

  2. 一 ArrayList 及其源码解析

    1.数组介绍 因为数组在存储数据时是按顺序存储的,存储的内存也是连续的,所以其特点是读取数据比较容易,插入删除比较困难 2.arraylist源码分析 1)构造方法(默认容量为10) 2)插入数据 扩 ...

  3. 使用Response下载(支持任何格式)

    使用Response下载 下面代码: protected void Button2_Click(object sender, EventArgs e) { Response.ContentType = ...

  4. shell脚本编程进阶及RAID和LVM应用1

    bash脚本编程 脚本文件格式: 第一行,顶格写: #!/bin/bash 注释行:#开头 代码注释:写清楚注释 规范写脚本:适度缩进,添加空白行 编程语言:有编程语法格式,库,算法和数据结构 编程思 ...

  5. c#读取文件夹路径,并保存在textBox1中

    private void button3_Click(object sender, RoutedEventArgs e) { System.Windows.Forms.FolderBrowserDia ...

  6. tnsnames.ora配置细节注意

    WXPT = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.250)(PORT = 1521) ...

  7. 少有人知的 GitHub 使用技巧

    GitHub 大家常上吧?可是使用 GitHub 的各种小窍门你就不一定知道了.本文将各种使用 GitHub 的小窍门分享给大家. diff时忽略空格 有些修改只是增减了空格,在URL中添加?w=1就 ...

  8. 定时备份etc目录

    #!/bin/bash # #******************************************************************** #encoding -*-utf ...

  9. Rasterize order group

    增加shade 这里的并行 可以让更多 ...并行只在write那里wait 语法 struct I {float a [[raster_order_group(0)]];};

  10. IE的F12开发人员工具不显示 转载自:http://blog.csdn.net/longyulu/article/details/8749705

    IE的F12开发人员工具不显示问题: 按下F12之后,开发人员工具在桌面上看不到,但是任务栏里有显示.将鼠标放在任务栏的开发人员工具上,出现一片透明的区域,选中之后却出不来.将鼠标移动到开发人员工具的 ...