来一发代码,先前后两两比较,如果前一个串是后一个串的字串,那他就是没必要的,假设第i个串是i+1的子串,如果在后面循环比较中,如果第i+1个串是后面串的子串,那i个串就没有比的必要了,如果第i+1不是后面串的子串,直接结束循环,查找结束,得出结果
#include <bits/stdc++.h>
int next[10005];
int T;
char s[505][2005];
bool v[550],flag;
void getnext(char str[],int len)
{
int k=0;
next[1]=0;
for(int i=2;i<=len;i++)
{
while(k>0&&str[k+1]!=str[i])
k=next[k];
if(str[k+1]==str[i])
k++;
next[i]=k;
}
}
int match(char P[],int lenp,char T[],int lent)
{
int res=0;
getnext(P,lenp);
int k=0;
for(int i=1;i<=lent;i++)
{
while(k>0&&P[k+1]!=T[i])
k=next[k];
if(P[k+1]==T[i])
k++;
if(k==lenp){
res++;
k=next[k];//这儿修改很重要,不然会超时
return 1;
}
}
return 0;
}
int main()
{
scanf("%d",&T);
int n;
for(int cs = 1;cs<=T;cs++)
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%s",s[i]+1);
memset(v,true,sizeof(v));
int sum = 0;
for(int i=2;i<=n;i++)
{
int lent=strlen(s[i]+1);
int lenp=strlen(s[i-1]+1);
if(match(s[i-1],lenp,s[i],lent))
v[i-1]=false;
}
printf("Case #%d: ",cs);
flag = false;
for(int i=n;i>=1&&!flag;i--)
{
for(int j=i-1;j>=1&&!flag;j--)
{
if(v[j])
{
int lenw=strlen(s[j]+1);
int lent=strlen(s[i]+1);
int ans=match(s[j],lenw,s[i],lent);
if(ans==0)
{
printf("%d\n",i);
flag = true;
break;
}
}
}
}
if(!flag) printf("-1\n");
}
//system("pause");
return 0;
}
分享到:
相关推荐
"hdu 1695 GCD(欧拉函数+容斥原理)" 题目大意是:给定 a, b, c, d, k,找到一队 x, y,满足 g(x, y) = k,且 x ∈ [1, b], y ∈ [1, d],问有多少对符合要求的 (x, y)。 思路是:gcd(x, y) == k 解释 x, y 都能...
- **HDU** 指的是“杭州电子科技大学”(Hangzhou Dianzi University),这所大学在ACM国际大学生程序设计竞赛中有着优异的表现。 - **ACM** 是指“Association for Computing Machinery”,即计算机协会,而在此处...
这个压缩包文件“HDU 2000-2099 解题报告”显然包含了在这个题号范围内的一些问题、答案以及解题思路,对于学习算法和提升编程能力具有很高的价值。 在这个范围内,我们可以预见到涵盖的算法类型可能包括但不限于:...
《杭电OnlineJudge 2000-2099解题报告》是针对杭州电子科技大学(HDU)在线评测系统(OnlineJudge)中2000至2099题目的详细解答集锦,主要涵盖了算法分析、编程技巧以及问题解决策略等内容。这份解题报告以CHM...
hdu 3341(ac自动机+状态压缩) 题意:容易理解... 思路:首先一开始容易想到要用到dp,开设一个dp[41][41][41][41][501]的数组来解决,但是明显内存已经超出范围了,于是就想如何减少内存呢?只要知道A、T、C、G其中...
【田忌赛马】是一道源自古代中国历史的著名策略问题,被转化为计算机科学中的算法题目,出现在HDU(杭州电子科技大学在线评测系统)的3993号问题中。该题目的主要目的是通过编程来解决如何在不确定的对手策略下,...
HDU-1711 Number Sequence(KMP算法)For each test case, you should output one line wh
【题目代码与详解】是针对在线编程竞赛平台HDU(杭州电子科技大学在线评测系统)和POJ(普林斯顿大学在线判题系统)中的经典题目所编写的解决方案和解析的集合。这些平台是程序员和计算机科学学生提升算法技能、熟悉...
本人准备2020年保研机试时刷的题目(虽然最后机试取消了,...来自某中流985,在HDU和vjudge平台上大概刷了400道。本文件地图(excel表格)包含了绝大部分我刷过的题目,笔记中具有思路、代码、总结和心得。 大佬勿入!
HDU 1022 Train Problem I 附详细思路
蟠桃记 1 折线分割平面 2 不容易系列之一 2 骨牌铺方格 3 不容易系列之(3)—— LELE的RPG难题 3 Children’s Queue 3 献给杭电五十周年校庆的礼物 3 钥匙计数之二 3 钥匙计数之一 3 母牛的故事 3 ...
HDU 300+ AC 代码集合是一个包含超过300个已通过验证的算法解决方案的资源,这些代码主要用于解决各类计算机编程竞赛中的问题。这些竞赛通常由杭州电子科技大学(HDU)主办,旨在提升参赛者的算法设计、编程和问题...
HDU(杭州电子科技大学在线评测系统)是一个深受程序员喜爱的在线编程练习平台,它提供了丰富的算法题目供用户挑战,帮助他们提升编程技能和算法理解能力。"hdu.rar_hdu"这个压缩包文件很可能是某位程序员整理的他在...
ACM hdu 线段树题目+源代码 线段树是一种非常重要的数据结构,它广泛应用于算法竞赛和实际编程中。今天,我们将通过 ACM hdu 的几个题目来学习和掌握线段树的基本概念和应用。 线段树的基本概念 线段树是一种...
【标题】"HDU_2010.rar"是一个压缩包文件,其中包含了与"HDU 2010"相关的资源,特别是针对"HDU ACM20"比赛的编程题目。"hdu 2010"和"hdu 20"可能是该比赛的不同简称或分类,而"hdu acm20"可能指的是该赛事的第20届...
【标签】"ACM题解 HDU"意味着这是一个关于如何解答HDU ACM题目的资源,可能包含了解题思路、算法解析、代码实现等方面的内容。这样的资料对于准备ACM比赛的选手或者希望提升算法能力的程序员来说非常有价值。 在...
对于这些源代码,readme.txt可能是作者对解题思路、算法详解或者代码实现的简单介绍,对于初学者来说,阅读这份文档可以帮助理解代码的核心思想和应用场景。 "zscas060102"、"yfndq2"、"flymaidou" 等文件名可能...
### hdu1250高精度加法 #### 背景介绍 在计算机科学与编程竞赛中,处理大整数运算(特别是加法、减法、乘法等)是常见的需求之一。当数字的位数超过了标准数据类型(如`int`、`long`等)所能表示的最大值时,就需要...
【标题】"HDU题目java实现"所涉及的知识点主要集中在使用Java编程语言解决杭州电子科技大学(HDU)在线评测系统中的算法问题。HDU是一个知名的在线编程竞赛平台,它提供了大量的算法题目供参赛者练习和提交解决方案...