您的位置:首页 > 其它

FZU 1481 环串

2016-08-15 19:47 155 查看
G - 环串
Time Limit:1000MS    Memory Limit:32768KB    64bit IO Format:%I64d & %I64u
SubmitStatusPracticeFZU
1481

Description

环串是一个首尾相接的串。例如,串abcabcxyzaxcaxcaxc 与串cabcxyzaxcaxcaxcab和xcaxcaxcabcabcxyza 是相同的环串。同一个环串可有多种不同的表示。

请编写一个程序计算在一个环串列表中有多少环串与一个已知的环串是表示相同的串。

Input

本题有多组输入数据,你必须处理到EOF为止

每组输入数据第一行有1个字符串。第二行有一个整数n(1<=n<=5000)。接下来n行每行有1个字符串。所有的字符串都是由不超过200个的小写字母组成

Output

输出与每组数据第一行字符串相同的环串个数。每组输入数据输出占一行

Sample Input

abcabcxyzaxcaxcaxc
3
xcaxcaxcabcabcxyza
cabcxyzaxcaxcaxcab
cabcxyzaxcaxcaxca


Sample Output

2

解题报告:暴力法一个一个字符进行比较就行。  注意一个循环取字符串 s[i%len],len为字符串s的长度

code:
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<queue>
#include<math.h>
#include<string.h>
#include<stdlib.h>

using namespace std;
typedef long long ll;

int main(){
// freopen("input.txt","r",stdin);
int n;
char s[205];
while(~scanf("%s",s)){
int len=strlen(s),sum=0;
scanf("%d",&n);
char ch[205];
for(int i=0;i<n;i++){
scanf("%s",ch);
int m=strlen(ch);
if(len!=m)
continue;
for(int i=0;i<len;i++){
int j=0,k=i;
while(j<m&&s[k%len]==ch[j]){
k++;
j++;
}
if(j==m){
sum++;
break;
}
}
}
printf("%d\n",sum);
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  acm FZU 1481 环串