最长字符串链接
来源:互联网 发布:高压柜模型实时数据 编辑:程序博客网 时间:2024/06/17 22:17
有n个长为m+1的字符串,如果某个字符串的最后m个字符与某个字符串的前m个字符匹配,
则两个字符串可以联接,问这n个字符串最多可以连成一个多长的字符串,如果出现循环,则返回错误。
思路 :分析一下,将各个字符串作为一个节点,首尾链接就好比是一条边,将两个节点连接起来,于是问题就变
成一个有关图的路径长度的问题。链接所得的字符串最长长度即为从图的某个节点出发所能得到的最长路
径问题,与最短路径类似,可以应用弗洛伊德算法求解。对于循环,即可认为各个节点通过其他节点又回
到自己,反应在路径长度上,就表示某个节点到自己节点的路径大于零(注:初始化个节点到自己的长度为零)。
- #include<iostream>
- #include<string>
- using namespace std;
- #define length 14
- bool Isconnect(string str1,string str2)
- {
- if(str1.size()!=str2.size())
- return false;
- int m=str1.size();
- for(int i=0;i<m-1;i++)
- {
- if(str1[i+1]!=str2[i])
- return false;
- }
- return true;
- }
- void Maxstring(string str[])
- {
- int G[length][length]={0};
- for(int i=0;i<length;i++)
- for(int j=0;j<length;j++)
- if(Isconnect(str[i],str[j]))
- G[i][j]=1;
- for(int i=0;i<length;i++)
- for(int j=0;j<length;j++)
- for(int k=0;k<length;k++)
- {
- if(G[i][k]!=0&&G[k][j]!=0)
- {
- int dis=G[i][k]+G[k][j];
- if(dis>G[i][j])
- G[i][j]=dis;
- }
- }
- for(int i=0;i<length;i++)
- if(G[i][i]>1)
- {
- cout<<"circle is detected"<<endl;
- return;
- }
- int max=0;
- for(int i=0;i<length;i++)
- for(int j=0;j<length;j++)
- {
- if(G[i][j]>max)
- max=G[i][j];
- }
- cout<<"Max length is "<<max+str[0].size()<<endl;
- }
- int main()
- {
- string str[length]={
- "abcd",
- "bcde",
- "cdea",
- "deab",
- "eaba",
- "abab",
- "deac",
- "cdei",
- "bcdf",
- "cdfi",
- "dfic",
- "cdfk",
- "bcdg",
- "babc"};
- Maxstring(str);
- }
如果在text字符串数组中再加一个"babc",就将形成环路,导致一些节点自身的路径非零,环路检测会报告出错。
0 0
- 最长字符串链接
- 37.最长字符串链接
- 37 最长字符串链接
- 最长字符串链接
- java-------------华为-----------字符串链接最长路径查询
- 最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串编辑距离(链接)
- 最长字符串
- 字符串链接
- 字符串链接
- 字符串链接
- 字符串中最长回文字符串
- 2503 最长字符串
- 最长不重复字符串
- Sicily 2503. 最长字符串
- 字符串搜索最长单词
- soj 2503 最长字符串
- 2503. 最长字符串
- 最长公共子字符串
- SQLServer 全文检索(full-text)语法
- Matlab 矩阵处理小结(3)-将多个errorbar图像绘制到一个图像上
- 版本化RESTful Web服务
- REST 概述
- URI设计
- 最长字符串链接
- 程序员生存手册的书摘
- scheme set-car! 模拟
- 选择资源粒度
- 网络编程学习笔记(RES_USE_INET6解析器选项)
- 从领域名词中识别资源
- Matlab矩阵处理小结(4)-批量将矩阵保存到不同的文件--动态更新文件名
- 数字电路设计之Wallace树形乘法器
- 应用状态VS资源状态