数组中数字相加 ,和为m ,用最少的数字个数。数组的每个数字可以取得无限个
1条回答 默认 最新
- CodeBytes 2023-03-04 15:12关注
该回答引用ChatGPT
这是一个经典的动态规划问题,可以使用一个一维数组来记录每个和的最小数字个数。
具体地,假设数组为nums,要求的和为m,我们定义一个一维数组dp,其中dp[i]表示和为i时所需的最小数字个数。
接下来,我们可以使用一个循环来遍历从1到m的每一个和。对于每个和i,我们可以使用另一个循环来遍历数组nums中的每个数字j,如果当前数字j小于等于i且dp[i-j]存在(即和为i-j的情况可以被满足),则我们可以更新dp[i]的值为dp[i-j]+1。这里加1是因为我们选择了一个数字j,所以总的数字个数要加1。
最后,当循环结束后,dp[m]就是所求的结果,即和为m时所需的最小数字个数。
下面是该问题的具体实现代码:
def min_num_of_nums(nums, m): dp = [float('inf')] * (m+1) dp[0] = 0 for i in range(1, m+1): for j in nums: if j <= i and dp[i-j] != float('inf'): dp[i] = min(dp[i], dp[i-j]+1) return dp[m]
时间复杂度为O(mn),其中n为数组nums的长度。
解决 无用评论 打赏 举报
悬赏问题
- ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
- ¥15 安装quartus II18.1时弹出此error,怎么解决?
- ¥15 keil官网下载psn序列号在哪
- ¥15 想用adb命令做一个通话软件,播放录音
- ¥30 Pytorch深度学习服务器跑不通问题解决?
- ¥15 部分客户订单定位有误的问题
- ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
- ¥15 Bug traq 数据包 大概什么价
- ¥15 在anaconda上pytorch和paddle paddle下载报错
- ¥25 自动填写QQ腾讯文档收集表