HDU 1238 Substing
2024-08-29 02:14:46
思路:
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;
}
最新文章
- CSS中对图片(background)的一些设置心得总结
- 关系数据库SQL之可编程性函数(用户自定义函数)
- MySQL: LEAVE Statement
- iOS开发实用技巧—在手机浏览器头部弹出app应用下载提示
- php empty isset is_null
- UPDATE语句:将一个表里的字段更新到另一个表的字段里的语句
- delphi 网络函数
- HTML+CSS学习笔记(1) - Html介绍
- 13个简单有用的android开发代码
- Oracle 空间管理
- MySQL中同一时候存在创建和上次更新时间戳字段解决方法浅析
- std::string 不支持back
- MyBatis+PageHelper实现分页
- ubuntu下发布asp.net core并用nginx代理之旅(续)
- 【C++11】unoedered_map和map(部分转载)
- 吴恩达课后作业学习2-week1-2正则化
- scrapy框架原理学习
- linux_查看磁盘与目录容量
- Linux基础命令---e2image
- 隐居网V2.0
热门文章
- Python学习-一个简单的计时器
- python bottle学习(四)request.quest/query_string/params/body等方法介绍
- [转]C#自定义控件属性与行为
- 编写高质量代码--改善python程序的建议(七)
- 【BZOJ4504】K个串 可持久化线段树+堆
- javajava持有对象(容器类)
- Ubuntu 16.04 安装google浏览器
- vitess元数据跨机房灾备解决方案
- JS去遍历Table的所有单元格中的内容
- 客户也可以申请它使用的最后一个IP地址。如果该客户所在的网络中此IP仍然可用,服务器就可以准许该申请。