您的位置:首页 > 编程语言

[编程题] 循环单词

2017-03-12 20:50 246 查看
如果一个单词通过循环右移获得的单词,我们称这些单词都为一种循环单词。 例如:picture 和 turepic 就是属于同一种循环单词。 现在给出n个单词,需要统计这个n个单词中有多少种循环单词。 

输入描述:

输入包括n+1行:

第一行为单词个数n(1 ≤ n ≤ 50)

接下来的n行,每行一个单词word[i],长度length(1 ≤ length ≤ 50)。由小写字母构成



输出描述:

输出循环单词的种数



输入例子:

5
picture
turepic
icturep
word
ordw



输出例子:


2#include<iostream>
#include<string>
#include<vector>
using namespace std;
bool compare(string x,string y)
{
if(x==y)
return true;
int i,j,k;
for(i=0;i<x.length()-1;i++)
{
bool ok=true;
for(j=i+1,k=0;j<x.length();j++,k++)
{
if(x[k]!=y[j])
ok=false;
}
if(ok)
{
for(j=0;j<=i;j++,k++)
{
if(x[k]!=y[j])
ok=false;
}
}
if(ok)
return true;
}
return false;
}
int main()
{
int n;
vector<string>a;
vector<int>c;
cin>>n;
int i,j;
for(i=0;i<n;i++)
{
string b;
cin>>b;
a.push_back(b);
c.push_back(0);
}
int num=1;
for(i=1;i<n;i++)
{
for(j=0;j<i;j++)
{
if(c[i]==0 && a[i].length()==a[j].length())
{

if(compare(a[i],a[j]))
{
c[i]=1;
break;
}
}
}
if(c[i]==0)
num++;
}
cout<<num<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: