Автор | Сообщение |
|
Отправлено: 28.03.22 19:41. Заголовок: Задача №194 Тема 24 не сходится ответ
Добрый день! Условие задачи: 194) Текстовый файл 24-191.txt содержит строку из заглавных латинских букв, всего не более чем из 10 6 символов. Определите количество подстрок длиной не более 15 символов, которые начинаются буквой A, содержат букву F, заканчиваются буквой B и не содержат других букв A и B, кроме первой и последней. В ответе 245. У меня 286. Подскажите, пожалуйста, где я ошибаюсь. На каком тесте? Что лишнее захватывает программа? Мое решение: #include <iostream> #include <fstream> #include <string> using namespace std; int main() { ifstream F("24-191.txt"); string s; int indA, indF, kol=0; getline( F, s ); for( int i=0; i<s.size(); i++) { if (s[ i]=='A') {indA=i;} if (s[ i]=='F') {indF=i;} if (s[ i]=='B') { if (indA!=-1 && indF<i && indF>indA && indF!=-1) { if (i-indA+1<=15) { kol++; indA=-1; // когда нашли цепочку, сбросим индексы indF=-1; } if (i-indA+1>15) {// если длина неподходящая, то нам не нужны индексы A и F indA=-1; indF=-1; } } } } cout << kol; return 0; }
|
|
|
Ответов - 2
[только новые]
|
|
|
| Администратор
|
Сообщение: 3423
|
|
Отправлено: 30.03.22 12:30. Заголовок: Вот пример строки, в..
Вот пример строки, в которой ваша программа находит подходящую подстроку, а ее там нет: string s = "ASTVIQYBFQCDB";
|
|
|
|
Отправлено: 30.03.22 19:02. Заголовок: Спасибо огромное!!! ..
Спасибо огромное!!! Исправила, все получилось
|
|
|
|