Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- // Функция F19 подсчитывает количество симметричных подстрок длиной 4 и более символов в строке p.
- int F19(char* p) {
- char* c;
- int ns; // Счетчик для количества симметричных подстрок
- // Внешний цикл проходит по каждому символу строки p
- for (c = p, ns = 0; *c != '\0'; c++) {
- // Внутренний цикл проверяет симметрию для подстрок вокруг текущего символа
- for (int k = 0; c - k >= p && c[k] != '\0'; k++) {
- // Прерываем, если символы по обе стороны от текущего не равны
- if (c[-k] != c[k]) break;
- // Увеличиваем счетчик, если длина симметричной подстроки >= 4 символов (k >= 3)
- if (k >= 3) ns++;
- }
- }
- return ns; // Возвращаем количество симметричных подстрок
- }
- int main() {
- // Примеры тестов
- char str1[] = "abccbaabccba";
- char str2[] = "abcd";
- char str3[] = "aaaabaaa";
- char str4[] = "abccba";
- char str5[] = "12344321";
- // Вывод результатов для различных тестовых строк
- printf("%s: %d\n", str1, F19(str1)); // Ожидается: 9
- printf("%s: %d\n", str2, F19(str2)); // Ожидается: 0
- printf("%s: %d\n", str3, F19(str3)); // Ожидается: 3
- printf("%s: %d\n", str4, F19(str4)); // Ожидается: 2
- printf("%s: %d\n", str5, F19(str5)); // Ожидается: 3
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement