因此,我们正在尝试执行以下代码。两个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
回答:
如果c或v不是整数,即class(c)计算为double ,则出现以下错误消息
??? Error using ==> idivide>idivide_check at 66 At least one argument must belong to an integer class. Error in ==> idivide at 42 idivide_check(a,b); 并且程序停止执行。因此,第二条语句的内部永远不会执行。相反,如果c是一个整数,例如uint8类,则一切执行正常。
另外:您实际上想用此代码实现什么?
更多&回答...