Форум » Динамическое программирование » как работает программа » Ответить

как работает программа

Eugeny1984: Добрый день, друзья! Подскажите, пожалуйста, чем отличается работы программа, если if вернет истину или ложь? Как именно вычисления дальше происходят и почему и при истине и лжи вычисления происходят по разному? (№ 5273) (М. Шагитов) Исполнитель преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера: 1. Умножь на 5 2. Умножь на 3 3. Прибавь 45 Первая команда умножает число на экране на 5, вторая – умножает на 3, третья – увеличивает на 45. Сколько существует различных программ, которые преобразуют исходное число 1 в число 2970, и при этом траектория вычислений не более 4 команд «умножь на 5», не менее 2 команд «умножь на 3», и ровно 5 команд «прибавь 45»? def f(x,y,p1,p2,p3): if x>=y: return x==y and p1<5 and p2>1 and p3==5 return f(x*5,y,p1+1,p2,p3) + f(x*3,y,p1,p2+1,p3) +f(x+45,y,p1,p2,p3+1) print(f(1,2970,0,0,0))

Ответов - 1

Ж: Истина говорит, что мы достигли финиша, удовлетворяя всем условиям. Ложь, что мы промахнулись мимо цели (стали >y) , или попали в конечное число y, нарушив какие-то условия. Логическая истина - это 1, логическая ложь - это 0 Return возвращает сумму всех этих результатов - а по сути нулей и единиц, значит, если запуск был успешен, в сумму добавится 1, иначе 0. Так мы и узнаем число правильных запусков.



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