No testdata at current.
这道题可以很暴力的用dfs暴搜解决。首先,我们用arr[i]表示第i个奖品的金额。dfs(tar,sumx,sumy,sumz),其中tar表示我们枚举到了arr[tar],然后就是选择将这个奖品放在哪一个盒子里。dfs中后面三个参数sumx,sumy,sumz就是表示三个盒子目前的金额数量。所以如果我们对于第tar个物品,选择放进第一个盒子里,那么就是dfs(tar+1,sumx+arr[tar],sumy,sumz)。同理,放在第二个和第三个分别是dfs(tar+1,sumx,sumy+arr[tar],sumz),dfs(tar+1,sumx,sumy,sumz+arr[tar])。
dfs除了递归的状态转移是一个重点,还有就是dfs递归停止时的条件。这里dfs停止的条件很明显就是tar==n+1,表示我们已经没有物品枚举了。然后当我们dfs结束后,我们需要统计满足要求的答案,也就是要sumx>sumy>sumz>0的答案。最后取最小值就行。
由于我们一共有15个奖品,每个奖品都选三个盒子,那么复杂度就是O(315)
本题属于以下题库,请选择所需题库进行购买