Форум » Динамическое программирование » Помогите, пожалуйста. Получается ответ 176, а должно быть 19. » Ответить

Помогите, пожалуйста. Получается ответ 176, а должно быть 19.

L2022: Исполнитель Калькулятор преобразует число на экране. У исполнителя есть три команды, которым присвоены номера: 1. Прибавить 1 2. Прибавить 5 3. Умножить на 3 Определите число, для получения которого из числа 1 существует 175 программ. var k:integer; function f(m,k:integer):integer; begin if k=175 then begin writeln(m);halt;end else begin f:=f(m+1,k+1); f:=f(m+5,k+1); f:=f(m*3,k+1); end; end; begin f(1,0); end.

Ответов - 3

Поляков: Попробуйте так:[pre2]var k: integer; function f(m, k: integer): integer; begin if m = k then f := 1 else if m > k then f := 0 else f := f(m + 1, k) + f(m + 5, k) + f(m * 3, k); end; begin var final := 1; while f(1, final) <> 175 do final := final + 1; writeln(final); end.[/pre2] Функция f возвращает число программ, с помощью которых можно из числа m получить число k.

L2022: Спасибо!

L2022: Еще раз благодарю, поняла, что считала не количество программ, а количество команд.




полная версия страницы