[编程题] 循环单词

    xiaoxiao2021-03-25  68

    如果一个单词通过循环右移获得的单词,我们称这些单词都为一种循环单词。 例如: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; }

    转载请注明原文地址: https://ju.6miu.com/read-36531.html

    最新回复(0)