题解 | #牛牛的目标特征数#

牛牛的目标特征数

https://www.nowcoder.com/practice/1e87226efd424750b5b3f573c4a64b05

思路

凑硬币原题。考点是完全背包,即每种物品可以选无限个

定义 f[j] 表示前 个物品中选择物品总面值为 时的总硬币数。

定义状态转移方程:f[j] = max(f[j], f[j - features[i]] + 1)。即考虑从之前的状态中比较面值为 和面值为 硬币的数量。如果选择前者,则表示不选择当前面值的硬币,否则选择当前面值的硬币,然后加

时间复杂度为 ,空间复杂度为 ,其中 为物品数量, 为背包容量。

参考代码
import java.util.*;


public class Solution {
    final int INF = 0x3f3f3f3f;
    
    public int minAnimalCount (int[] features, int target) {
        int[] f = new int[target + 1];
        int n = features.length;
        
        Arrays.fill(f, INF);
        f[0] = 0;
        for (int i = 0; i < features.length; i++) {
            for (int j = features[i]; j <= target; j++) {
                f[j] = Math.min(f[j], f[j - features[i]] + 1);
            }
        }

        return f[target] == INF ? -1 : f[target];
    }
}
全部评论

相关推荐

爱喝奶茶的垂耳兔拥抱太阳:感觉项目和实习没有技术亮点和难点,单纯说了自己干了啥
点赞 评论 收藏
分享
04-06 16:59
已编辑
河南工业大学 Java
牛牛牛的牛子:最好扔了,实在没有选择的选择
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务