Итак, мы пытаемся выполнить следующий код.Однако два оператора if выполняются, но внутренние операторы if не выполняются (мы убедились в этом, не подавляя вывод).Есть ли причина, почему?Или мы просто не в состоянии достичь этого состояния?
Технические характеристики
Входные данные выглядят следующим образом: v - вектор значений int, а c - целое число.c должно быть меньше или равно одному из значений в v
Проблема, которую мы пытаемся решить с помощью этого алгоритма, следующая:
Учитывая кассовый аппарат, какможно ли сделать такое изменение, чтобы клиенту было возвращено наименьшее количество монет?
Пример: вход: v = [1, 10, 25, 50], c = 40. Выход O = [5, 1,1, 0]
Мы просто ищем не лучшее решение, а скорее причину, по которой эта часть кода не выполняется.
function O = changeGreedy(v,c)
O = zeros(size(v,1), size(v,2));
for v_item = 1:size(v,2)
%locate largest term
l_v_item = 1
for temp = 2:size(v,2)
if v(l_v_item) < v(temp)
l_v_item = temp
end
end
%"Items inside if statement are not executing"
if (c > v(l_v_item))
v(l_v_item) = -1 %"Not executing"
else
O(l_v_item) = idivide(c, v(l_v_item)) %"Not executing"
c = mod(c, v(l_v_item)) %"Not executing"
end
end