Задать вопрос
@iayjull

Как решить задачу на c?

int main()
{
    int x, i;
    scanf("%d", &x);
    int a[0]*x;
    for (i = 1; i = x; i++)
        if i+1<=x: a[i+1]+=a[i];
        if i*2<=x: a[i*2]+=a[i];
        if i*3<=x: a[i*3]+=a[i];
    printf("%d\n", a[x]);
}


6480670be9ffd432243029.png

решала такие задачи на питоне, но не знаю, как правильно перенести на синтаксис с
  • Вопрос задан
  • 234 просмотра
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Нетология
    Разработчик на C++
    12 месяцев
    Далее
  • Академия Эдюсон
    Разработчик игр на Unreal Engine + ИИ
    9 месяцев
    Далее
  • Stepik
    Профессия: Разработчик C++ (Junior)
    2 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 2
GavriKos
@GavriKos
Микропетпроджект - https://voidtrack.space/
Ну если выше ваша попытка перенести на си, то:
if i+1<=x:

это так не работает, условие должно быть в круглых скобках (if это оператор), двоеточие не нужно:
if (i+1<=x)

int a[0]*x;


Вот это я вообще не понял и 99% что это не будет работать. Просто почитайте в гугле как в си инициализировать массив переменной длины.

И да - в тегах c++, в вопросе c - вы определитесь

P.S. Логику не проверял вообще, чисто синтаксис. Кстати в цикле тоже ошибка - и тоже просто советую загуглить цикл for
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Задача похожа на knapsack problem. Ее можно переформулировать как укладка вещей в рюкзаке с полным заполнением и с сохранением порядка вещей. Или еще как поиск всех сумм целых чисел 1,2,3 равных в сумме n.

Если представить тернарное дерево где childs - это соотвественно длины прыжков (веса) - тогда задача сводится к генерации всех возможных путей в тернарном дереве где длина пути равна n. У этого дерева будет много лишних ветвей которые можно сразу отбросить на этапе обхода если частичная сумма уже больше чем n.

Вобщем DFS.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы