Re: Задачка

Author: Д.П. [301 views] 2015-08-07 17:14:33
In response to: Задачка by A. Fig Lee, 2015-08-07 15:59:14

идея: шагаем через n этажей. как только первый диск разбивается на этаже k*n, спускаемся на этаж (k-1)*n+1 и начиная с него идем последовательно, проверяя высоту последним диском.

надо понять какое значение n=2,3,4,5,... - оптимально.

я использовал такой критерий оптимальности:
для фиксированного шага n, для каждого этажа f считаем, сколько попыток надо сделать, если этаж f - это минимально "нужный" для разбивания. общий критерий S - это сумма попыток для всех этажей от 1-го до 30-го при данном шаге n. например, при шаге 3, для пятого этажа надо 4 попытки (3, 6(первый диск разбился), 4, 5).

для разных значений n можно посчитать S:
n=1 S=465 (последовательный перебор, неинтересно. но единственный вариант, когда достаточно одного диска)
n=2 S=255
n=3 S=195
n=4 S=171
n=5 S=165
n=6 S=165
n=7 S=165
n=8 S=171

Оптимальным может обозначить такой шаг n, при котором S минимально. Как видно из верхней таблицы - это шаги 5, 6, 7.

для примера, таблица попыток для шагов 3 и 5.

floor step=3 step=5
1 2 2
2 3 3
3 1 4
4 3 5
5 4 1
6 2 3
7 4 4
8 5 5
9 3 6
10 5 2
11 6 4
12 4 5
13 6 6
14 7 7
15 5 3
16 7 5
17 8 6
18 6 7
19 8 8
20 9 4
21 7 6
22 9 7
23 10 8
24 8 9
25 10 5
26 11 7
27 9 8
28 11 9
29 12 10
30 10 6

S= 195 165

Reply
|
Reply to sender (private) |
Synchronize | Thread