折半搜索。先在前一半搜索可以拼成的0~W之间的重量,存在a数组,去重(存的数组要开$2^n$大小而不是n,否则会爆)。然后在后一半搜索可以拼成的0~W之间的重量(设为wt),在a数组里二分查找≤W-wt的最大的数。
写两个搜索时,不要写错变量名(我开始把dfs2写成dfs,调了半小时)。
折半搜索。先在前一半搜索可以拼成的0~W之间的重量,存在a数组,去重(存的数组要开$2^n$大小而不是n,否则会爆)。然后在后一半搜索可以拼成的0~W之间的重量(设为wt),在a数组里二分查找≤W-wt的最大的数。
写两个搜索时,不要写错变量名(我开始把dfs2写成dfs,调了半小时)。
转载于:https://www.cnblogs.com/xzs123456/p/10417970.html