这道题的解题思路是使用动态规划。我们定义一个一维数组 dpdpdp ,其中 dpdpdp [ iii ] 表示能否用这些砝码称出重量 iii 。
初始时,我们假设可以用一个砝码称出重量为 000 ,即 dpdpdp [ 000 ] === 111 。然后,对于每一种砝码,我们遍历其个数,更新 dpdpdp 数组。具体而言,对于每个砝码,我们将其放入称重的过程中,逐步更新可以称出的不同重量的状态。
这里采用了三重循环:
外层循环遍历每一种砝码。
中层循环遍历当前砝码的个数。
内层循环倒序遍历 dpdpdp 数组,逐步更新能够称出的不同重量。
最终,统计 dpdpdp 数组中值为 111 的元素的个数,即为能够用这些砝码称出的不同重量的个数。