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

Posted kafuuchino

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bzoj1622 / P2908 [USACO08OPEN]文字的力量Word Power相关的知识,希望对你有一定的参考价值。

P2908 [USACO08OPEN]文字的力量Word Power

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

直接暴力枚举即可。

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

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

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

技术分享图片
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cctype>
 5 #define re register
 6 using namespace std;
 7 char a[1003][1003],b[103][33];
 8 int n,m,ans,c[103],lena[1003],lenb[103];
 9 int main(){
10     scanf("%d%d",&n,&m);
11     for(re int i=1;i<=n;++i){
12         char c=getchar();
13         while(!isalpha(c)) c=getchar();
14         while(isalpha(c)) a[i][lena[i]++]=tolower(c),c=getchar();
15     }
16     for(re int i=1;i<=m;++i){
17         char c=getchar();
18         while(!isalpha(c)) c=getchar();
19         while(isalpha(c)) b[i][lenb[i]++]=tolower(c),c=getchar();
20     }
21 //----读入字符串-------
22     for(re int i=1;i<=n;++i){
23         memset(c,0,sizeof(c)); ans=0;
24         for(re int j=0;j<lena[i];++j){
25             for(re int k=1;k<=m;++k){
26                 if(c[k]==-1) continue;
27                 if(b[k][c[k]]==a[i][j]) ++c[k];
28                 if(c[k]==lenb[k]) ++ans,c[k]=-1;//这个子串的字母全出现过了
29             }
30         }printf("%d
",ans);
31     }return 0;
32 }
View Code

 

以上是关于bzoj1622 / P2908 [USACO08OPEN]文字的力量Word Power的主要内容,如果未能解决你的问题,请参考以下文章

bzoj1622[Usaco2008 Open]Word Power 名字的能量*

BZOJ——1622: [Usaco2008 Open]Word Power 名字的能量

bzoj 1622: [Usaco2008 Open]Word Power 名字的能量模拟

BZOJ_1622_[Usaco2008_Open]_Word_Power_名字的能量_(字符匹配_暴力)

bzoj1603 / P2913 [USACO08OCT]车轮旋转Wheel Rotation

bzoj1613 / P1353 [USACO08JAN]跑步Running