Олимпиадные задачи
Задача «Таблица»
Первый способ
Второй способ
262.50K
Категория: ПрограммированиеПрограммирование

Олимпиадные задачи. Динамическое программирование

1. Олимпиадные задачи

ОЛИМПИАДНЫЕ
ЗАДАЧИ
Динамическое программирование
Григорьева А.В.

2. Задача «Таблица»

3.

4. Первый способ

5. Второй способ

С диагоналями. Нужен, чтобы хранить не 3 строки одной таблицы (B), а по две
строки трех таблиц (L, R, B)

6.

2
3
4
5
2
L
3
4
5
R
2
3
4
5
B
2
Первую строку заполняем первой строкой из А
Заполняем вторую строку B по-честному
Что должно
получиться
3
4
5
5
9
12
9
23
40
44
33




7.

2
3
4
5
2
L
3
4
5
R
B
2
3
4
5
2+3
2+3+4
3+4+5
4+5
2
Первую строку заполняем первой строкой из А
Заполняем вторую строку B по-честному
Что должно
получиться
3
4
5
5
9
12
9
23
40
44
33




8.

L
2
3
4
5
5
11
15
13
B[i, j] = 2*B[i-1,j] + L[i-1,j-1] + R[i+1,j+1]
L[i, j] = L[i-1,j-1] + B[i,j]
B
R[i, j] = R[i-1,j+1] + B[i,j]
R
2
3
4
5
5
9
12
9
2
3
4
5
8
13
17
9
2
Заполняем вторую строку L и R по формулам
Теперь можно и третью строку В заполнить
Что должно
получиться
3
4
5
5
9
12
9
23
40
44
33




9.

L
2
3
4
5
5
11
15
13
B[i, j] = 2*B[i-1,j] + L[i-1,j-1] + R[i+1,j+1]
L[i, j] = L[i-1,j-1] + B[i,j]
B
R[i, j] = R[i-1,j+1] + B[i,j]
R
2
3
4
5
5
9
12
9
2
3
4
5
8
13
17
9
2*5+
13
2
Теперь можно и третью строку В заполнить
Что должно
получиться
3
4
5
5
9
12
9
23
40
44
33




10.

L
2
3
4
5
5
11
15
13
B[i, j] = 2*B[i-1,j] + L[i-1,j-1] + R[i+1,j+1]
L[i, j] = L[i-1,j-1] + B[i,j]
B
R[i, j] = R[i-1,j+1] + B[i,j]
R
2
3
4
5
5
9
12
9
23
2*9 +
5 + 17
2
3
4
5
8
13
17
9
2
Теперь можно и третью строку В заполнить
Что должно
получиться
3
4
5
5
9
12
9
23
40
44
33




11.

L
2
3
4
5
5
11
15
13
B[i, j] = 2*B[i-1,j] + L[i-1,j-1] + R[i+1,j+1]
L[i, j] = L[i-1,j-1] + B[i,j]
B
R[i, j] = R[i-1,j+1] + B[i,j]
R
2
3
4
5
5
9
12
9
23
40
12*2 +
11 + 9
2
3
4
5
8
13
17
9
2
Теперь можно и третью строку В заполнить
Что должно
получиться
3
4
5
5
9
12
9
23
40
44
33




12.

L
2
3
4
5
5
11
15
13
B[i, j] = 2*B[i-1,j] + L[i-1,j-1] + R[i+1,j+1]
L[i, j] = L[i-1,j-1] + B[i,j]
B
R[i, j] = R[i-1,j+1] + B[i,j]
R
2
3
4
5
5
9
12
9
23
40
44
2*9 +
15 + 0
2
3
4
5
8
13
17
9
2
Теперь можно и третью строку В заполнить
Что должно
получиться
3
4
5
5
9
12
9
23
40
44
33




13.

L
2
3
4
5
5
11
15
13
R
2
3
4
5
8
13
17
9
23+0
B[i, j] = 2*B[i-1,j] + L[i-1,j-1] + R[i+1,j+1]
L[i, j] = L[i-1,j-1] + B[i,j]
B
R[i, j] = R[i-1,j+1] + B[i,j]
2
3
4
5
5
9
12
9
23
40
44
33
2
Далее заполняем по формулам третьи строки L и R
Что должно
получиться
3
4
5
5
9
12
9
23
40
44
33




14.

L
2
3
4
5
5
11
15
13
23
40 + 5
B[i, j] = 2*B[i-1,j] + L[i-1,j-1] + R[i+1,j+1]
L[i, j] = L[i-1,j-1] + B[i,j]
B
R[i, j] = R[i-1,j+1] + B[i,j]
R
2
3
4
5
5
9
12
9
23
40
44
33
2
3
4
5
8
13
17
9
2
Далее заполняем по формулам третьи строки L и R и т.д.
Что должно
получиться
3
4
5
5
9
12
9
23
40
44
33




15.

L
2
3
4
5
5
11
15
13
23
45
11+44
B[i, j] = 2*B[i-1,j] + L[i-1,j-1] + R[i+1,j+1]
L[i, j] = L[i-1,j-1] + B[i,j]
B
R[i, j] = R[i-1,j+1] + B[i,j]
R
2
3
4
5
5
9
12
9
23
40
44
33
2
3
4
5
8
13
17
9
2
Далее заполняем по формулам третьи строки L и R и т.д.
Что должно
получиться
3
4
5
5
9
12
9
23
40
44
33




English     Русский Правила