Задания
Версия для печати и копирования в MS Word
Тип Д13 B13 № 55809
i

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

Спрятать решение

Ре­ше­ние.

По­счи­та­ем по­сле­до­ва­тель­но ко­ли­че­ство путей до каж­до­го из пунк­тов:

А  =  1 (на­чаль­ный пункт);

Б  =  А  =  1;

В  =  А + Б  =  2;

Г  =  Б + В  =  3;

Д  =  Г  =  3;

Е  =  Д + Г  =  6;

Ж  =  Г  =  3;

З  =  Е + Г + Ж  =  12;

И  =  Д + Е  =  9;

Л  =  З + Ж  =  15;

К  =  И + Е + З + Л  =  42;

М  =  И + К + Л  =  66 (ко­неч­ный пункт).

 

Ответ: 66.

 

При­ведём ре­ше­ние Ев­ге­ния Дж­об­са на языке Python.

Прин­цип ре­ше­ния (цик­ли­че­ское, от «А»).

1.  Опи­сы­ва­ем все вхо­дя­щие дуги.

2.  Опре­де­ля­ем зна­че­ние в А, как 1.

3.  Если зна­че­ния для всех на­чаль­ных пунк­тов во вхо­дя­щих дугах опре­де­ле­ны, то на­хо­дим зна­че­ние в те­ку­щей вер­ши­не.

4.  Вы­пол­ня­ем ал­го­ритм до тех пор, пока зна­че­ния для всех вер­шин не будет под­счи­та­но.

g_str = 'ба вба гвб дг едг жг згеж иде киезл

лзж микл'

g = {c[0]: c[1:] for c in g_str.split()}

r = {'а': 1}

while not all(x in r for x in g):

for v, d in g.items():

if v not in r and all(x in r

for x in d):

r[v] = sum(r[x] for x in d)

print(r['м'])

 

При­ведём ре­ше­ние Ев­ге­ния Дж­об­са на языке Python.

Прин­цип ре­ше­ния (ре­кур­сив­ное, от «А»).

g_str = 'ба вба гвб дг едг жг згеж иде киезл

лзж микл'

g = {c[0]: c[1:] for c in g_str.split()}

def f(v):

if v == 'а':

return 1

return sum(f(x) for x in g[v])

print(f('м'))

Источник: ЕГЭ по ин­фор­ма­ти­ке 06.04.2023. До­сроч­ная волна