思路:

1.找出n个字符串中最短的字符串Str[N]

2.从长到短找Str[N]的子子串 subStr[N],以及subStr[N]的反转字符串strrev(subStr[N]);(从长到短是做剪枝处理)

3.用strstr()函数遍历所有的字符串,看是否含有此子子串subStr[N]或strrev(subStr[N]);只要有一个字符串不包含subStr[N]或strrev(subStr[N])就放弃这个子串,尝试下一个;

4.找到第一个满足要求的就输出strlen(subStr[N])或者strlen(strrev(subStr[N]));  这里可以用string.h头问件中的一个函数strncpy(str1, str2, n);功能:将字符串2中的最多n个字符复制到字符数组1中;

这里可以直接返回n;

#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<queue>
#include<stack>
#include<math.h>
#include<vector>
#include<stdlib.h>
using namespace std;
#define INF 0x3f3f3f3f
#define N 110
struct MAZE
{
char str[N];
int len;
} maze[N]; bool cmp(MAZE x, MAZE y)
{
return x.len<y.len;
} int solve(int n);
int Find(char str[], int n);
int main()
{
int t, n; scanf("%d", &t);
while(t--)
{
memset(maze, 0, sizeof(maze));
scanf("%d", &n);
for(int i=0; i<n; i++)
{
scanf("%s", maze[i].str);
maze[i].len=strlen(maze[i].str);
}
sort(maze, maze+n,cmp);
int ans=solve(n);
printf("%d\n", ans);
}
return 0;
} int solve(int n)
{
char Str[N];
for(int i=maze[0].len; i>0; i--)
{
strcpy(Str, maze[0].str);
strcat(Str, maze[0].str);
for(int j=0; j<maze[0].len; j++)
{
char subStr[N];
memset(subStr, 0, sizeof(subStr));//必须初始化
strncpy(subStr, Str+j, i); if(Find(subStr, n))
return i;
if(Find(strrev(subStr), n))
return i;
}
}
return 0;
} int Find(char s[], int n)
{
for(int i=1; i<n; i++)
{
if(!(strstr(maze[i].str, s)))
return 0;
}
return 1;
}

  

最新文章

  1. CSS中对图片(background)的一些设置心得总结
  2. 关系数据库SQL之可编程性函数(用户自定义函数)
  3. MySQL: LEAVE Statement
  4. iOS开发实用技巧—在手机浏览器头部弹出app应用下载提示
  5. php empty isset is_null
  6. UPDATE语句:将一个表里的字段更新到另一个表的字段里的语句
  7. delphi 网络函数
  8. HTML+CSS学习笔记(1) - Html介绍
  9. 13个简单有用的android开发代码
  10. Oracle 空间管理
  11. MySQL中同一时候存在创建和上次更新时间戳字段解决方法浅析
  12. std::string 不支持back
  13. MyBatis+PageHelper实现分页
  14. ubuntu下发布asp.net core并用nginx代理之旅(续)
  15. 【C++11】unoedered_map和map(部分转载)
  16. 吴恩达课后作业学习2-week1-2正则化
  17. scrapy框架原理学习
  18. linux_查看磁盘与目录容量
  19. Linux基础命令---e2image
  20. 隐居网V2.0

热门文章

  1. Python学习-一个简单的计时器
  2. python bottle学习(四)request.quest/query_string/params/body等方法介绍
  3. [转]C#自定义控件属性与行为
  4. 编写高质量代码--改善python程序的建议(七)
  5. 【BZOJ4504】K个串 可持久化线段树+堆
  6. javajava持有对象(容器类)
  7. Ubuntu 16.04 安装google浏览器
  8. vitess元数据跨机房灾备解决方案
  9. JS去遍历Table的所有单元格中的内容
  10. 客户也可以申请它使用的最后一个IP地址。如果该客户所在的网络中此IP仍然可用,服务器就可以准许该申请。