Задания
Версия для печати и копирования в MS Word

Квад­рат раз­ли­но­ван на N×N кле­ток (1 < N < 17). Ис­пол­ни­тель Робот может пе­ре­ме­щать­ся по клет­кам, вы­пол­няя за одно пе­ре­ме­ще­ние одну из двух ко­манд: впра­во или вниз. По ко­ман­де впра­во Робот пе­ре­ме­ща­ет­ся в со­сед­нюю пра­вую клет­ку, по ко­ман­де вниз  — в со­сед­нюю ниж­нюю. При по­пыт­ке вы­хо­да за гра­ни­цу квад­ра­та Робот раз­ру­ша­ет­ся. Перед каж­дым за­пус­ком Ро­бо­та в каж­дой клет­ке квад­ра­та лежит мо­не­та до­сто­ин­ством от 1 до 100. По­се­тив клет­ку, Робот за­би­ра­ет мо­не­ту с собой; это также от­но­сит­ся к на­чаль­ной и ко­неч­ной клет­ке марш­ру­та Ро­бо­та.

За­да­ние 18

От­крой­те файл. Опре­де­ли­те мак­си­маль­ную и ми­ни­маль­ную де­неж­ную сумму, ко­то­рую может со­брать Робот, прой­дя из левой верх­ней клет­ки в пра­вую ниж­нюю. В ответ за­пи­ши­те два числа друг за дру­гом без раз­де­ли­тель­ных зна­ков  — сна­ча­ла мак­си­маль­ную сумму, затем ми­ни­маль­ную.

Ис­ход­ные дан­ные пред­став­ля­ют собой элек­трон­ную таб­ли­цу раз­ме­ром N×N, каж­дая ячей­ка ко­то­рой со­от­вет­ству­ет клет­ке квад­ра­та.

При­мер вход­ных дан­ных:

 

1884
10113
13122
2356

 

Для ука­зан­ных вход­ных дан­ных от­ве­том долж­на быть пара чисел 41 и 22.

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

Ре­ше­ние.

Сна­ча­ла найдём мак­си­маль­ную де­неж­ную сумму. Для этого найдём мак­си­маль­ную де­неж­ную сумму для каж­дой ячей­ки таб­ли­цы. Для каж­дой ячей­ки верх­ней стро­ки это будет сумма всех ячеек слева от те­ку­щей. Для каж­дой ячей­ки ле­во­го столб­ца это будет сумма всех ячеек свер­ху от те­ку­щей. В ячей­ку L1 за­пи­шем фор­му­лу =СУММ($A$1:A1). Ско­пи­ру­ем эту фор­му­лу во все ячей­ки в диа­па­зо­не M1:U1 и в диа­па­зо­не L2:L10. Для осталь­ных ячеек будем срав­ни­вать зна­че­ние ячей­ки слева и зна­че­ние ячей­ки свер­ху и при­сва­и­вать те­ку­щей ячей­ке зна­че­ние суммы той ячей­ки, в ко­то­рой зна­че­ние боль­ше, и те­ку­щей ячей­ки. В M2 за­пи­шем фор­му­лу =ЕСЛИ(L2>M1;L2+B2;M1+B2) и ско­пи­ру­ем эту фор­му­лу во все ячей­ки диа­па­зо­на M2:U10. Таким об­ра­зом, в ячей­ке U10 по­лу­чим зна­че­ние мак­си­маль­ной де­неж­ной суммы  — 1204.

Ана­ло­гич­ным об­ра­зом найдём зна­че­ние ми­ни­маль­ной де­неж­ной суммы. Ячей­ки диа­па­зо­нов L1:L10 и M1:U1 за­пол­ня­ют­ся также, как при по­ис­ке мак­си­маль­ной де­неж­ной суммы. В M2 за­пи­шем фор­му­лу =ЕСЛИ(L2 < M1;L2+B2;M1+B2) и ско­пи­ру­ем эту фор­му­лу во все ячей­ки диа­па­зо­на M2:U10. Таким об­ра­зом, в ячей­ке U10 по­лу­чим зна­че­ние ми­ни­маль­ной де­неж­ной суммы  — 502.

 

Ответ: 1204502.

 

При­ведём ре­ше­ние Артёма Гри­ди­на на языке Python.

s = tuple(tuple(int(x) for x in m.split(';')) for m in open('18_demo.csv').read().splitlines())

N = len(s)

for f in [lambda a, b: max(a, b), lambda a,b: min(a, b)]:

m = [[0 for _ in range(N)] for _ in range(N)]

m[0][0] = s[0][0]

for i in range(1, N):

m[0][i]=s[0][i]+m[0][i-1]

m[i][0]=s[i][0]+m[i-1][0]

for row in range(1, N):

for column in range(1, N):

m[row][column] = s[row][column]+f(m[row-1][column], m[row][column-1])

print(m[N-1][N-1],end='')


Аналоги к заданию № 27415: 27666 Все

Источник: Де­мон­стра­ци­он­ная вер­сия ЕГЭ−2021 по ин­фор­ма­ти­ке
Раздел кодификатора ФИПИ: 3.4.3 Ис­поль­зо­ва­ние ин­стру­мен­тов ре­ше­ния ста­ти­сти­че­ских и рас­чет­но-гра­фи­че­ских задач