假设数组是:[1,2,5,7,10,13,17,21],你必须找到5个数字,其总和等于31.算法是什么?
答案 0 :(得分:1)
对于像你这样的小阵列,效率并不重要。诀窍是让它快速。像这样的东西会起作用(用Matlab编写,但它很容易翻译成任何语言):
array=[1, 2, 5, 7, 10, 13, 17, 21];
sum_val=31;
for a=1:(length(array)-4]
for b=(a+1):(length(array)-3)
for c=(b+1):(length(array)-2)
for d=(c+1):(length(array)-1)
for e=(d+1):(length(array)-0)
if array(a)+array(b)+array(c)+array(d)+array(e)=sum_val
fprintf("%i+%i+%i+%i+%i=%i",array(a),array(b),array(c),array(d),array(e),sum_val);
end
end
end
end
end