На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение



Сообщение: 45
ссылка на сообщение  Отправлено: 24.08.22 12:35. Заголовок: Задания 13 автор А.Калинин


Добрый день!
Можно попросить автора рассказать, как решать предложенные задачи? Видео с разбором Кабанова, я посмотрела, но предложенный там граф решается легко, а вот графы А.Калинина этим способом не решаются, раздвоение начальной вершины тоже не помогает. Сама, к сожалению, придумать что-то путнее не смогла!

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 9 [только новые]


Администратор




Сообщение: 3680
ссылка на сообщение  Отправлено: 01.09.22 23:13. Заголовок: Автор сделал разбор ..


Автор сделал разбор одной из своих задач, его можно посмотреть в этом файле.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 12
ссылка на сообщение  Отправлено: 20.09.22 08:33. Заголовок: №114


В этом номере у меня получается ответ 16, а не 14
https://postimg.cc/2V3h8xF3 - демонстрация решения

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 271
ссылка на сообщение  Отправлено: 24.01.23 07:18. Заголовок: Nadegda пишет: В эт..


Nadegda пишет:

 цитата:
В этом номере у меня получается ответ 16, а не 14


Увы и ах, вы ошибаетесь, правильный ответ - 14, вот программное решение:
 
s='АБЖ БВЗ ВГ ГДЕЖЗ ДЕ ЕЖА ЖЗ ЗАВ'
d ={c[0]:c[1:] for c in s.split()}
def f(s,end):
if len(s)>1 and s[-1]==end: return 1
return sum(f(s+c,end)for c in d[s[-1]] if c not in s or c==end)
print(f('З','З'))


Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 13
ссылка на сообщение  Отправлено: 23.09.22 18:03. Заголовок: https://ibb.co/MR6MC..




Спасибо: 2 
ПрофильЦитата Ответить





Сообщение: 268
ссылка на сообщение  Отправлено: 23.01.23 17:24. Заголовок: ganilova пишет: а в..


ganilova пишет:

 цитата:
а вот графы А.Калинина этим способом не решаются


А как их решать, если у него нет половины букв, например, в задачах 115, 116, 117...

это с одной стороны, а с другой, зачем мучиться писать программу, если задачка вручную решается за пару минут!
Программу разумно писать для задачек вроде 131 или 135

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 269
ссылка на сообщение  Отправлено: 24.01.23 06:52. Заголовок: Исganilova пишет: а..


Исganilova пишет:

 цитата:
а вот графы А.Калинина этим способом не решаются


У меня в графах Калинина почему то указаны не все Вершины, но если, глядя на рисунок участника Nox, и предположить, что вершины указаны так,как я дорисовал в паинте: ,
то решение данной задачи, опираясь на идею Алексея Кабанова, может выглядеть примерно так:
 
pam=set()
s='АБЖ БВЗ ВГ ГДЖЗ ДКЕАЖ ЕИА ЖЗ ЗАВ ИА КЕ'
d ={c[0]:c[1:] for c in s.split()}
def f(s,end):
if s[-1]==end:
pam.add(s)
return 1
return sum(f(s+c,end)for c in d[s[-1]] if c not in s)

f('А','З')
f('В','З')

print(len(pam))


Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 270
ссылка на сообщение  Отправлено: 24.01.23 07:16. Заголовок: К рассмотренному выш..


К рассмотренному выше решению можно написать и еще более компактный код, например такой:
 
s='АБЖ БВЗ ВГ ГДЖЗ ДКЕАЖ ЕИА ЖЗ ЗАВ ИА КЕ'
d ={c[0]:c[1:] for c in s.split()}
def f(s,end):
if len(s)>1 and s[-1]==end: return 1
return sum(f(s+c,end)for c in d[s[-1]] if c not in s or c==end)
print(f('З','З'))

Ответ:18

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 272
ссылка на сообщение  Отправлено: 24.01.23 07:44. Заголовок: Оказывается, не так ..


ganilova пишет:

 цитата:
а вот графы А.Калинина этим способом не решаются


Оказывается, не так страшны "графы Калинина"!
Вот нашел в ege13 еще одно программное решение на его задачу :

Р-07 (А. Калинин) На рисунке представлена схема дорог, связывающих города А, Б, В, Г, Д, Е, Ж, З, И, К, Л, М. По каждой дороге можно двигаться только в одном направлении, указанном стрелкой. Определите количество различных путей ненулевой длины, которые начинаются и заканчиваются в городе И, не содержат этот город в качестве промежуточного пункта и проходят через промежуточные города не более одного раза.
 
G = {
'А': "БК", 'Б': "В", 'В': "Г", 'Г': "ДЕ",
'Д': "Е", 'Е': "ВЖЗ", 'Ж': "БЗИМ", 'З': "БВ",
'И': "АБК", 'К': "", 'Л': "АИ", 'М': "ЛИ",
}
count = 0
def findPath( path, target ):
global count
lastTown = path[-1]
if lastTown == target and len(path) > 1:
count += 1
print( path )
return
for town in G[lastTown]:
if not town in path or town == target:
findPath( path+town, target )

findPath( 'И', 'И' )
print( count )


Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 273
ссылка на сообщение  Отправлено: 24.01.23 08:07. Заголовок: s11kai пишет: Р-07 ..


s11kai пишет:

 цитата:
Р-07 (А. Калинин) На рисунке представлена схема дорог, связывающих города А, Б, В, Г, Д, Е, Ж, З, И, К, Л, М. По каждой дороге можно двигаться только в одном направлении, указанном стрелкой. Определите количество различных путей ненулевой длины, которые начинаются и заканчиваются в городе И, не содержат этот город в качестве промежуточного пункта и проходят через промежуточные города не более одного раза.

А вот ее же решение, только более компактным кодом:
 
s='АБ БВ ВГ ГДЕ ДЕ ЕВЖЗ ЖМИБЗ ЗБВ ИАБ ЛАИ МЛИ'
d ={c[0]:c[1:] for c in s.split()}
def f(s,end):
if len(s)>1 and s[-1]==end: return 1
return sum(f(s+c,end)for c in d[s[-1]] if c not in s or c==end)
print(f('И','И'))


Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 651
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет