FOJ Problem 1481 环串
程序员文章站
2022-06-08 08:12:18
...
一,问题描述
二,问题分析
暴力循环**,我们采用一个集合记录下字符串的所有环串的形式,在通过比较输入的字符串是否存在与集合中,如果存在,ans++
三,问题解答
#include<iostream>
#include<string>
#include<vector>
#include<set>
using namespace std;
set<string> allstring(string str) { //得到str所有的环串
string temp = str;
set<string> vec;
for (int i = 0; i < str.size(); i++) {
for (int j = 0; j < str.size(); j++) {
temp[j] = str[(j + i) % str.size()];
}
vec.insert(temp);
}
return vec;
}
int main() {
string str;
set<string> sets;
while (cin>>str)
{
sets.clear(); //集合及时清空
sets = allstring(str); //存储所有的环串
int n; //n行比较的字符串
cin >> n;
string str2;
int ans = 0;
for (int i = 0; i < n; i++) { //输入需要比较的字符串
cin >> str2;
if (sets.find(str2) != sets.end()) { //如果集合中能找到的话,说明该字符串是其环串
ans++;
}
else {
continue;
}
}
cout << ans << endl;
}
return 0;
}
上一篇: 1-9 最长连续递增子序列 (20分)——C语言实现
下一篇: python生成随机mac地址的方法
推荐阅读