Форум » Обработка символьных строк » №4409 (24.179) не сходится ответ » Ответить

№4409 (24.179) не сходится ответ

beep: Здравствуйте! Из ответа следует, что в строке есть 6347 подстрок вида CB*BC (где * это C). У меня получилось 5760. При простой проверке тоже получается 5760. [pre] while True: pos = line.find("CBCBC") if pos == -1: break line = line[pos + 1 : ] count += 1 print(count) [/pre] Данный символ C может быть началом подстроки, серединой подстроки или концом подстроки. Поскольку CBCBC палиндром, то рассматривая C как начало и конец строки мы получаем одну и ту же подстроку. Если рассматривать C как середину строки, то у нас получается подстрока следующего вида **CBC и чтобы эта подстрока подходила под условие, первые два символа должны быть CB, тогда получается CBCBC - искомая подстрока, которую мы уже учли, проходя предыдущий символ C (первый в подстроке). Что я не учитываю или ответ неправильный?

Ответов - 4

LeoShastin: Здравствуйте! В условии указано: «В ответе укажите сначала букву, которая чаще всего встречается на месте "*" (собственно, это и есть буква С), затем общее количество подходящих комбинаций.» Под общим количеством подходящих комбинаций имеется в виду количество не только тех комбинаций, где под "*" подразумевается наиболее часто встречающаяся буква, но ещё и количество комбинаций вида CBDBC + CBEBC, в результате мы получим: CBCBC = 5760 + CBDBC = 0 + CBEBC = 587 = 5760 + 587 = 6347. В ответ записываем "С", как символ, который встречается на месте "*" чаще всего, и общее количество подходящих под условие комбинаций. Получаем как раз: С6347.

beep: LeoShastin, спасибо! Меня погубила невнимательность.

Yflzf55: Простите, пожалуйста, но я не понимаю ваших рассуждений. Каким образом вы считаете количество вхождений подстроки CBCBC? s.count('CBCBC') дает 5016 вхождений прямой поиск во файлу тоже указывает это число Что я не учитываю? Пожалуйста, поясните


Ирик: Yflzf55 пишет: Здравствуйте! Решали разными способами. Тут зависит от постановки задачи. Приведу пример: Найти количество "ага" в "агага". Если букву повторно считать нельзя, то s.count считает 1 "ага". Если же считать повторно, то имеем "АГАга" и "агАГА". Так и с файлом. Поэтому у вас и получаются разные ответы, что считаете по-разному.



полная версия страницы