我已经面临一个问题好几天了,我有一个值,比如N = 0.8
和一个数组,比如tab = [0.4, 0.1, 0.4, 0.5]
这里我们可以看到索引0和2的值是0. 8,但是我不能用一种干净的方式来编程,我最终得到了太多的for循环(精确地说是3个)。
我试着做了一个简单的算法,创建一个变量value = 0
,两个for循环,在第一个循环中添加第一个元素,在第二个循环中添加其他元素,同时检查value + tab[j] <= 0.8
,在某些情况下它有效,在其他情况下,它小于0。8。
2条答案
按热度按时间eh57zj3b1#
htzpubme2#
这是一个递归的版本。
当总和为零时,我们有基本情况,返回
true
;当值列表为空时,返回false
;如果列表中的第一个数字太大,我们就丢弃它,然后再循环;然后我们尝试使用第一个数字,从目标值中减去它,再循环剩余的数字;如果不起作用,我们尝试丢弃第一个数字并以相同的目标重复。我们可以编写类似的代码来找到第一个有效的集合:
一个二个一个一个