求助,字符串题目。谢谢。
  • 板块学术版
  • 楼主lmrttx
  • 当前回复3
  • 已保存回复3
  • 发布时间2020/10/18 17:59
  • 上次更新2023/11/5 10:27:54
查看原帖
求助,字符串题目。谢谢。
344382
lmrttx楼主2020/10/18 17:59

【小A撸串串(string)】

问题描述

小A想撸 n 根串,每个串的长度为 d 。小A想找出 n 根串都有的一个子串,使得这个子串的长度最大。

数据输入

从文件string.in中读入数据。

第一行输入两个正整数 n,d。

接下来 n 行,每行输入一个长度为 d 的仅包含大小写字母的字符串。

结果输出

输出到文件string.out中。

输出一行一个整数表示 n 个串的最长公共子串长度。

输入示例

3 6

aabcab

abcaab

bcabca

输出示例

4

数据范围

对于20%的数据,n=1。

对于100%的数据,n,d<=30。

我不知道为什么0分但是样例+手造数据全过的代码

#include<cstdio>
#include<cstring>
#include<iostream>
char str[31][31];
int n,d;
inline int read(){
	int s=0;char ch=getchar();
	while(ch<='9'&&ch>='0')
	{
		s=s*10+ch-'0';
		ch=getchar();
	}
	return s;
} 
int main()
{
	//freopen("string.in","r",stdin);
	//freopen("string.out","w",stdout);
	n=read();d=read();
	int minstr=1,minlen=d;
	for(register int i=0;i<n;i++)
	{
		gets(str[i]);
	}
	char dest[31],ans[31];
	int maxn=0;
	for(register int i=0;i<minlen;i++){
		for(register int j=0;j<minlen-i;j++)
		{
			strncpy(dest,str[minstr]+i,j);
			dest[j]='\0';
			bool flag=1;
			for(register int k=0;k<n;k++)
			{
				if(strstr(str[k],dest)==NULL){
					flag=0;break;
				}
			}
			if(flag&&strlen(dest)>maxn){
				maxn=strlen(dest);
				strcpy(ans,dest);
			}
		}
	}
	printf("%d",maxn);
	return 0;
}

有人能告诉我原因吗???

2020/10/18 17:59
加载中...