AcWing 5556. 牛的语言学
原题链接
中等
作者:
代码人生
,
2024-03-17 10:13:20
,
所有人可见
,
阅读 57
#include <iostream>
#include <cstring>
#include <algorithm>
#include <set>
using namespace std;
const int N = 10010;
int n;
string s;
bool f[N];
int main()
{
cin >> s;
n = s.size();
f[n - 1] = true;
set<string> res;
for (int i = n - 2; i >= 4; i -- )
for (int j = 2; j <= 3; j ++ )
if (f[i + j])
{
string a = s.substr(i + 1, j);
string b = s.substr(i + 1 + j, j);
if (a != b || f[i + 5])
{
f[i] = true;
res.insert(a);
}
}
cout << res.size() << endl;
for (auto& t: res) cout << t << endl;
return 0;
}