, чтобы решить эту DP, вы должны построить таблицу с минимальным количеством шагов, необходимых для получения n, если были доступны одна, две или все операции. вы будете создавать его слева направо, сверху вниз, ie 1 до n, добавьте 1 к mul 3. По мере того, как вы go вниз, становится доступно больше операций
Значение ячеек зависит только от значение над ним (если доступно) и atmax 3 значения в левой части, например. для (n = 6), (mul 3) ячейка будет зависеть только от (n = 6),(mul 2)
и (n = 2)(mul 3)
, (n = 3)(mul 3)
, (n = 5)(mul 3)
. затем вы сравните эти значения, и в зависимости от того, какое из них меньше после операции, вы поместите это значение, поэтому вы будете сравнивать значение (n = 2)(mul 3) + 1
vs (n = 3)(mul 3) + 1
vs (n = 5)(mul 3) + 1
vs (n = 6)(mul 2)
, а затем то, что меньше, вы поместите это значение
, поскольку задано n = 1, в первом столбце все значения будут равны нулю
для n = 2, его значения будут зависеть от значений n = 1. вы можете " добавить 1 "или" умножить на 2 "(1 шаг), оба значения действительны. поэтому этот столбец будет иметь все значения как 0 + 1 = 1
для n = 3, его значения будут зависеть от значений n = 1 (потому что 1 = 1/3 из 3) И n = 2. если вы можете «добавить 1» или «умножить на 2», тогда вы выберете прибавление 1 к n = 2, так что общее количество шагов 1 + 1 = 2. НО если вы также можете умножить на три, вам понадобится только один шаг, поэтому 0 + 1 = 1. поскольку 1 <2, вы установите 1 как это значение. поэтому записи для n = 3 равны 2, 2, 1 </p>
для n = 4, это будет зависеть от n = 3 (добавить 1) и n = 2 (mul 2). поэтому значения будут 3, 2, 2
для n = 5, это будет зависеть от n = 4 (добавить 1). поэтому значения будут 4, 3, 3
, поэтому минимальные шаги 3 для достижения n = 5
итоговая таблица:
1 2 3 4 5
add 1 0 1 2 3 4
mul 2 0 1 2 2 3
mul 3 0 1 1 2 3