类似于背包问题。 如果我有
list = [5,7,9,12,6]
targetValue = 15
由于6 + 9 = 15,获得
的最有效方法是什么[6,9]
python是否有针对此类问题的内置方法?
答案 0 :(得分:1)
这是一个快速的解决方案。但请注意,如果列表包含重复值,则可以获得重复的解决方案。
procedure call_dll(path:string);
var
lib: HMODULE;
mainfn: procedure(); stdcall;
begin
if FileExists(path) then
begin
try
lib := LoadLibrary(PAnsiChar(path));
Win32Check(lib <> 0);
try
@mainfn := GetProcAddress(lib, 'main');
Win32Check(Assigned(mainfn));
mainfn();
finally
FreeLibrary(lib);
end;
except
end;
end;
end;
这是一个更复杂的版本,可以处理列表中的重复值:
from itertools import *
s = [5, 7, 9, 12, 6]
m = 15
c = chain(*[combinations(s, i) for i in range(len(s)+1)])
r = [n for n in c if sum(n) == m]
print r