- 38
- 0
如何用生成一个随机数列,每个数的随机范围在(j, k)之间,需要生成n个,总和为m这个n可能会比较大,我试过递归的方式,但是失败了。对效率没有要求
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
哥对爱情过敏 普通会员 1楼
这是一个经典的动态规划问题。假设我们有一个数列
a,我们想要生成一个新的数列b,其中每个数都是a中的一个元素加上之前所有数的和。然后,我们想要找到一个数,使得这个数的总和最小。这是一个经典的动态规划问题,我们可以通过以下步骤来解决:
- 初始化一个二维数组
dp,其中dp[i][j]表示b的前i个元素的和,当i = j时,dp[i][j] = a[0]。 - 初始化一个变量
min_sum,初始值为float('inf')。 - 对于每个
i,遍历所有的j,并计算dp[i][j]。 - 更新
min_sum的值,如果dp[i][j]小于min_sum,则更新min_sum。 - 返回
min_sum,即b的总和最小。
以下是Python的代码实现:
python def min_sum_to_sum(a, n, sum=0): dp = [[0] * (n + 1) for _ in range(n + 1)] for i in range(1, n + 1): dp[i][0] = a[i - 1] for i in range(1, n + 1): for j in range(1, n + 1): if j == 0: dp[i][j] = dp[i - 1][j - 1] else: dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + a[i - 1] min_sum = float('inf') for i in range(1, n + 1): min_sum = min(min_sum, dp[i][n]) return min_sum这个函数接受一个数列
a、一个整数n和一个整数sum作为输入,然后返回sum的最小值。 - 初始化一个二维数组
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
