псевдокод:
MinNumCoins ← ∞
Это утверждает "Инициализировать MinNumCoins к бесконечности".
Ваш эквивалентный код:
int minNumCoins;
Объявляет minNumCoins
, но оставляет это неинициализированным. Это не только не то, что указано в псевдокоде, но так как код впоследствии использует неинициализированную переменную, это приводит к неопределенному поведению.
Существуют два основных подхода к реализации этого псевдокода:
1) Используйте вторую переменную, которая указывает, имеет ли значение было установлено, или нет. Цель инициализации переменной до бесконечности - найти наименьшее значение, которое вычисляется для нее. При каждой попытке вычисляется потенциальное значение кандидата для MinNumCoins
, и если оно меньше текущего значения MinNumCoins
, новое значение заменяет его. MinNumCoins
получает наименьшее значение, которое вычисляется для него.
Путем инициализации переменной с положительной бесконечностью это приводит к принятию первого вычисленного значения для MinNumCoins
и его установке (поскольку первое вычисленное значение всегда будет меньше бесконечности).
В логике замены используется вторая переменная - флаг, указывающий, было ли задано значение. Если это не так, значение устанавливается независимо от того, что это такое; но если переменная была установлена, код, как обычно, сравнивает ее с новым вычисленным значением и обновляет ее, если вычисленное значение меньше существующего значения.
2) Второй подход - инициализировать переменную до максимально возможного значения. Для «бесконечности» нет значения, которое может быть установлено в int
. Ближайшим кандидатом будет максимальное максимальное значение, которое может быть установлено в int
. Это будет:
#include <limits>
int MinNumCoins = std::numeric_limits<int>::max();
Будет ли это несколько «взломать» приемлемое решение вашей проблемы, вам что-то решать.
Почему все внезапно выздоравливают за проблему изменения монет? – P0W
Возможный дубликат [Рекурсивное изменение монеты C++] (http://stackoverflow.com/questions/37106465/recursive-coin-change-c) –
Чтение из биоинформатики Алгоритмы интерактивного учебного подхода к подходу p204 и попытки понять их псевдокод .. поэтому я могу двигаться дальше! – Zingo