Загрузка...

Помогите понять как решить эту задлачу с помощью динамического программирования

Тема в разделе C/C++ создана пользователем Dunvil 15 мар 2022. 417 просмотров

  1. Dunvil
    Dunvil Автор темы 15 мар 2022 5 11 июн 2020
    Задача №2963. Калькулятор
    Имеется калькулятор, который выполняет три операции:

    1. Прибавить к числу X единицу.
    2. Умножить число X на 2.
    3. Умножить число X на 3.
    Определите, какое наименьшее число операций необходимо для того, чтобы получить из числа 1 заданное число N.

    Входные данные
    Программа получает на вход одно число, не превосходящее 106.

    Выходные данные
    Требуется вывести одно число: наименьшее количество искомых операций.
    Если не трудно объяснить строчки кода с выполнением всех операций
     
  2. kirafanov
    Держи, бро)
    C
    #include <iostream>
    #include <string>

    int f(int n)
    {
    if (n==1) return 0;
    int v;
    v = f(n-1);
    if(n%2==0) v = std::min(v,f(n/2));
    if(n%3==0) v = std::min(v,f(n/3));
    return v +1;
    }


    int main()
    {
    int n;
    std::cin>>n;
    std::cout << f(n);
    std::cin>>n;
    }
     
    15 мар 2022 Изменено
    1. Посмотреть предыдущие комментарии (1)
    2. kirafanov
      M1h4n1k, что по твоему считается динамикой?
    3. vtlstolyarov
      kirafanov, динамическое программирование - это когда ты переиспользуешь ранее вычесленные результаты вместо рекурсивного вызова
Top
Загрузка...