bzoj1622 / P2908 [USACO08OPEN]文字的力量Word Power

P2908 [USACO08OPEN]文字的力量Word Power

第一眼:AC自动机(大雾)

直接暴力枚举即可。

用<cctype>的函数较方便(还挺快)

$isalpha(a)$:$a$是否是字母

$tolower(a)$:$a$把a转成小写

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cctype>
#define re register
using namespace std;
char a[][],b[][];
int n,m,ans,c[],lena[],lenb[];
int main(){
scanf("%d%d",&n,&m);
for(re int i=;i<=n;++i){
char c=getchar();
while(!isalpha(c)) c=getchar();
while(isalpha(c)) a[i][lena[i]++]=tolower(c),c=getchar();
}
for(re int i=;i<=m;++i){
char c=getchar();
while(!isalpha(c)) c=getchar();
while(isalpha(c)) b[i][lenb[i]++]=tolower(c),c=getchar();
}
//----读入字符串-------
for(re int i=;i<=n;++i){
memset(c,,sizeof(c)); ans=;
for(re int j=;j<lena[i];++j){
for(re int k=;k<=m;++k){
if(c[k]==-) continue;
if(b[k][c[k]]==a[i][j]) ++c[k];
if(c[k]==lenb[k]) ++ans,c[k]=-;//这个子串的字母全出现过了
}
}printf("%d\n",ans);
}return ;
}
上一篇:node-sass 安装失败报错的原因及解决办法(整理)


下一篇:MySQL server has gone away报错原因分析及解决办法