zoukankan      html  css  js  c++  java
  • hdu1238

    找最长的公共字串,暴搜呀,

    先将字符串按长度从短到长排序,枚举最短的字符串的子串,判断是否都是别的字符串的子串,求出最大长度
    什么反串之类的,其实在枚举最短字串的时候,多定义一个字符串再一起赋值就OK了,看代码吧
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    char s[105][105];
    int main()
    {
    	int t;
    	scanf("%d",&t);
    	while(t--)
    	{
    		int n,m=100000,l;
    		scanf("%d",&n);getchar();
    		for(int i=0;i<n;i++)
    		{
    			scanf("%s",s[i]);
    			if(strlen(s[i])<m)
    		    {
    			  m=strlen(s[i]);
    			  l=i;
    			}
    		}
    		char os[105],ps[105],ans=0;
    		for(int i=0;i<strlen(s[l]);i++)
    		{
    			for(int j=i;j<strlen(s[l]);j++)//变量i和j 用来枚举字串的首和尾
    			{
    				int b=0;
    				for(int k=i;k<=j;k++)//枚举最短字串的长度,正串和反串
    				{
    					os[b++]=s[l][k];
    					ps[j-k]=s[l][k];
    				}
    				os[b]='\0';ps[j-i+1]='\0';
    				int flag=1;
    				for(int k=0;k<n;k++)
    				{
    					if(!strstr(s[k],os)&&!strstr(s[k],ps))//正串和反串都没有在字符串在出现
    						{
    							flag=0;break;
    					}
    				}
    
                       if(flag&&ans<strlen(ps))
    						ans=strlen(ps);
    			}
    		}
    		printf("%d\n",ans);
    	}
    	return 0;
    }
    

  • 相关阅读:
    Jupyter notebook 读取文件的问题
    机器学习-数据清洗和特征选择
    机器学习-逻辑回归
    Java教程
    13.并发编程
    redis 实现
    CyclicBarrier介绍
    Future模式衍生出来的更高级的应用
    并发编程 futuretask
    整理POST请求方式
  • 原文地址:https://www.cnblogs.com/nanke/p/2122364.html
Copyright © 2011-2022 走看看