寻找最大的交替数字总和(python 3)

Galc127

我被要求编写一个函数,该函数查找给定数字和给定数字位数的最大交替数字总和。例如,数字81010的3个交替和的长度为3-(8-1 + 0),(1-0 + 1),(0-1 + 0),我们应该返回答案7。

对数字的每个子序列求和很容易,但是可能要花一些时间,并且算法应该足够快以处理非常大的数字。我不知道如何编写比编写普通函数更快的函数...

有一条线索说,想想如何通过给定前n个数字的总和,我们才能有效地找到序列中从第二个数字开始的数字的总和。

请帮忙,谢谢。

PS我确实看到了一些有关找到最大和的问题,但无法设法找到最大和的答案。

这是查找最大连续数字总和的代码:

def max_sum(n,d):
    number = list(map(int,str(n)))
    maximum = current = sum(number[:d])
    for i in range(0, len(number)-d):
        current = current - number[i] + number[i+d]
        if current > maximum: 
           maximum = current
    return maximum
米隆
1. Negate every even number (81010 -> 8 -1 0 -1 0), find biggest_sum_1 starting at an odd position
2. Negate every odd number (81010 -> -8 1 0 1 0), find biggest_sum_2 starting at an even position
3. Return max(biggest_sum_1, biggest_sum_2)

您要求提供算法,因此应将其迁移到Theoretical Computer Science网站。

编辑:添加了python代码

def max_alt_sum(n,d):
  number = list(map(int,str(n)))
  negatedEven = []
  negatedOdd = []
  for i,v in enumerate(number):
    if i%2==0:
      negatedOdd.append(v)
      negatedEven.append(-v)
    else:
      negatedOdd.append(-v)
      negatedEven.append(v)
  maximum = sum(negatedEven[:d])
  for i in range(0, len(str(n))-d+1):
    if i%2==0:
      current = sum(negatedOdd[i:i+d])
    else:
      current = sum(negatedEven[i:i+d])
    if current > maximum:
      maximum = current
  return maximum

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

查找最大交替数字总和(python 3)

来自分类Dev

数字中的最大交替总和

来自分类Dev

交替(更快)对3嵌套循环Python的战争

来自分类Dev

寻找最大可能的总和

来自分类Dev

计算 3 位数字的阶乘总和

来自分类Dev

从 3 个数字中找出最大的数字

来自分类Dev

查找 SubMatrix 3x3 JavaScript 的最大总和

来自分类Dev

欧拉计画的挑战3:寻找大量的最大素数

来自分类Dev

欧拉计画的挑战3:寻找大量的最大素数

来自分类Dev

寻找3D矩阵的局部最大值

来自分类Dev

在SAS中寻找最大价值(前3名)

来自分类Dev

构成最大总和的数字

来自分类Dev

从python中3个数字的乘积中找到最大的回文

来自分类Dev

获取最大总和为 3 列的行 - Mysql

来自分类Dev

Javascript函数中的返回值(数字总和除以3)

来自分类Dev

1 到 1000 之间的数字总和为 3

来自分类Dev

Python:3D列表,总和列

来自分类Dev

Python 3 猜数字游戏

来自分类Dev

SublimeCodeIntel不在python 3路径中寻找

来自分类Dev

获取旧数字的整数总和 1 + (1 + 2) + (1 + 2 + 3) + ... + (1 + 2 + 3 + ... + n)

来自分类Dev

如何生成一个 3 位数字的列表,它们的数字总和等于 17?

来自分类Dev

在多个表格中查找前3个最大的数字[EXCEL]

来自分类Dev

如何找到3D阵列中最大的数字?

来自分类Dev

C数组中3个连续数字的最大和

来自分类Dev

从最小到最大排序 3 个数字

来自分类Dev

Python:数字总和

来自分类Dev

寻找3个数字中最小的一个。(作业)

来自分类Dev

我可以交替使用 conda 和 pip3 来安装 Python 包吗?

来自分类Dev

Python:3维列表第二行的总和