//存在一个错误,使用一个外循环和使用嵌套循环,存在异常
//gets()得到一串含空格的字符串
#include <stdio.h>
#include <string.h>
#include <ctype.h>
/*int Match(char os[],char ot[])
{
int len1=strlen(os),len2=strlen(ot);//注意不要搞混strlen() 和 sizeof()
char s[25],t[75];
int count=0;
for(int i=0;i<=len1;i++)
{
if(isupper(os[i]))
s[i]=tolower(os[i]);
else
s[i]=os[i];
}
for(int i=0;i<=len2;i++)
{
if(isupper(ot[i]))
t[i]=tolower(ot[i]);
else
t[i]=ot[i];
}
// s[len1]='\0';
// t[len2]='\0';
for(int i=0;i<=len2-len1;)
{
int j;
for(j=0;j<len1;)
{
if(s[j]==t[i])
{
i++;
j++;
}
else
{
i=i-j+1;
j=0;
break;
}
}
if(j==len1)
{
int left,right;
left=i-j-1;
right=i;
if((left<0 || !isalpha(t[left])) && (right>=len2 || !isalpha(t[right])))
count++;
}
}
return count;
}*/
void GetNext(char s[],int next[])
{
int len=strlen(s);
next[0]=-1;
/*int j=0;
for(int k=1;k<len;)
{
if(s[k]==s[j])
{
j++;
k++;
next[k]=j;
}
else
{
while(j!=-1 && s[k]!=s[j])
j=next[j];
k++;
j++;
next[k]=j;
}
}*/
int j=-1;
for(int k=0;k<len;)
{
if(j==-1 || s[k]==s[j]){++k;++j;next[k]=j;}
else
j=next[j];
}
}
int KMP_Match(char os[],char ot[])
{
int len1=strlen(os),len2=strlen(ot);//注意不要搞混strlen() 和 sizeof()
char s[25],t[75];
int next[25];
int count=0;
for(int i=0;i<=len1;i++)
{
if(isupper(os[i]))
s[i]=tolower(os[i]);
else
s[i]=os[i];
}
for(int i=0;i<=len2;i++)
{
if(isupper(ot[i]))
t[i]=tolower(ot[i]);
else
t[i]=ot[i];
}
GetNext(s,next);
for(int i=0,j=-1;i<=len2-len1;)
{
if(j==-1 || s[j]==t[i])
{
i++;
j++;
}
else
{
j=next[j];
}
/*for(int i=0;i<=len2-len1;)
{
int j;
for(j=0;j<len1;)
{
if(s[j]==t[i])
{
i++;
j++;
}
else
{
//i=i-j+1;
//j=0;
j=next[j];
if(j==-1)
{
i++;
break;
}
}
}*/
/*for(;j<len1;)
{
if(j==-1 || s[j]==t[i])
{
i++;
j++;
}
else
{
j=next[j];
break;
}
}*/
if(j>=len1)
{
int left,right;
left=i-j-1;
right=i;
if((left<0 || !isalpha(t[left])) && (right>=len2 || !isalpha(t[right])))
count++;
j=0;
}
}
return count;
}
int main()
{
char keys[25][25],excuses[25][75];
int count[25];
int K,E;
int cas=0;
while(scanf("%d%d",&K,&E)==2)
{
++cas;
//getchar();
memset(count,0,sizeof(count));
int max=-1;
for(int i=0;i<K;i++)
scanf("%s",keys[i]);
getchar();//需要截取一个换行符
for(int i=0;i<E;i++)
gets(excuses[i]);
for(int i=0;i<E;i++)
{
for(int j=0;j<K;j++)
count[i]+=KMP_Match(keys[j],excuses[i]);
if(count[i]>max)
max=count[i];
}
printf("Excuse Set #%d\n",cas);
for(int i=0;i<E;i++)
//if(count[i]==max)
// printf("%s\n",excuses[i]);
printf("%s\t%d\n",excuses[i],count[i]);
printf("\n");
}
return 0;
}
409 - Excuses, Excuses!未通过
最新推荐文章于 2023-02-07 10:02:46 发布
部署运行你感兴趣的模型镜像
您可能感兴趣的与本文相关的镜像
HunyuanVideo-Foley
语音合成
HunyuanVideo-Foley是由腾讯混元2025年8月28日宣布开源端到端视频音效生成模型,用户只需输入视频和文字,就能为视频匹配电影级音效
274

被折叠的 条评论
为什么被折叠?



