1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void solve()
{
char s[N], p[N]; int lena, lenb;
cin >> lena >> s + 1 >> lenb >> p + 1;
for (int i = 1; i <= lenb; i++)
{
bool flag = true;
for (int j = 1; j <= lena; j++)
if (p[i + j - 1] != s[j])
{
flag = false; break;
}
if (flag) cout << i - 1 << ' ';
}

}

朴素做法在极端条件下的时间复杂度为 On×mO(n \times m)