打印所有对 n 个整数求和的方法,使它们的总和达到给定的和。

2023-12-05

我正在尝试提出一种算法,该算法将打印出对 N 个整数求和的所有可能方法,以便它们总计达到给定值。

例子。打印所有对 4 个整数求和的方法,使它们的总和为 5。

结果应该是这样的:

5 0 0 0
4 1 0 0
3 2 0 0
3 1 1 0
2 3 0 0
2 2 1 0
2 1 2 0
2 1 1 1
1 4 0 0
1 3 1 0 
1 2 2 0
1 2 1 1
1 1 3 0
1 1 2 1
1 1 1 2

这是基于 Alinium 的代码。
我修改了它,以便它打印出所有可能的组合,因为他已经完成了所有排列。
另外,我认为当 n=1 时你不需要 for 循环,因为在这种情况下,只有一个数字应该导致总和等于值。
使边界情况发挥作用的各种其他修改。

def sum(n, value):
    arr = [0]*n  # create an array of size n, filled with zeroes
    sumRecursive(n, value, 0, n, arr);

def sumRecursive(n, value, sumSoFar, topLevel, arr):
    if n == 1:
        if sumSoFar <= value:
            #Make sure it's in ascending order (or only level)
            if topLevel == 1 or (value - sumSoFar >= arr[-2]):
                arr[(-1)] = value - sumSoFar #put it in the n_th last index of arr
                print arr
    elif n > 0:
        #Make sure it's in ascending order
        start = 0
        if (n != topLevel):
            start = arr[(-1*n)-1]   #the value before this element

        for i in range(start, value+1): # i = start...value
            arr[(-1*n)] = i  # put i in the n_th last index of arr
            sumRecursive(n-1, value, sumSoFar + i, topLevel, arr)

运行 sum(4, 5) 返回:
[0,0,0,5]
[0,0,1,4]
[0,0,2,3]
[0,1,1,3]
[1,1,1,2]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

打印所有对 n 个整数求和的方法,使它们的总和达到给定的和。 的相关文章

  • 固定大小集以包含给定集的最大数量

    我有大约 1000 组尺寸 1 4 1 3 3 5 6 4 5 6 7 5 25 42 67 100 是否有可能找到包含最大数量的给定集合的大小为 20 的集合 检查每一个100 80 20 集 效率低下 我不太确定这是 NP 完全的 考虑
  • 如何将一组重叠范围划分为不重叠范围?

    假设您有一组范围 0 100 一 0 75 b 95 150 c 120 130 d 显然 这些范围在某些点上重叠 您将如何剖析这些范围以生成不重叠范围的列表 同时保留与其原始范围相关的信息 在本例中为范围后面的字母 例如 运行算法后的上述
  • 两组数的最小公等和及组合

    我目前正在用 C 创建一个程序 该程序将查找两组数字的尽可能低的相等总和 您可以在其中根据需要多次重复这些数字 比如我有这两套 10 13 18 and 12 16 22 我能得到的最低金额是28 10 18 and 12 16 另一个例子
  • 0-1背包算法

    以下 0 1 背包问题是否可解 浮动 正值和 浮动 权重 可以是正数或负数 背包的 浮动 容量 gt 0 我平均有 这是一个相对简单的二进制程序 我建议用蛮力进行修剪 如果任何时候你超过了允许的重量 你不需要尝试其他物品的组合 你可以丢弃整
  • 分而治之策略来确定列表中是否有超过 1/3 的相同元素

    我正在使用分治算法来确定列表中是否有超过 1 3 的元素相同 例如 1 2 3 4 不 所有元素都是唯一的 1 1 2 4 5 是的 其中 2 个是相同的 没有排序 是否有分而治之的策略 我陷入了如何划分的困境 def is valid i
  • 包围一组点的多边形

    我有一组 S 点 2D 由 x 和 y 定义 我想找到 P 包围该组所有点的最小 含义 具有最少数量的点 多边形 P 是S 有没有已知的算法来计算这个 我在这个领域缺乏文化令人惊讶 感谢您的帮助 对于这个问题有很多算法 它被称为 最小边界框
  • 生成所有多集大小为 n 的分区的算法

    我一直在试图找出一种方法来生成多重集的所有不同的大小为 n 的分区 但到目前为止却空手而归 首先让我展示一下我想要实现的目标 假设我们有一个输入向量uint32 t std vector
  • 如何有效地找到距给定点最远的点(从一组点中)?

    我正在寻找一种算法或数据结构来解决以下问题 给你一组点 S 然后你会得到另一个点形式的 Q 查询 对于每个查询 找到集合中距离给定点最远的点 集合中最多有 10 5 个点和 10 5 个查询 所有点的坐标都在 0 到 10 5 范围内 我想
  • GCC的sqrt()编译后如何工作?使用哪种root方法?牛顿-拉夫森?

    只是对标准感到好奇sqrt 来自 GCC 上的 math h 我自己编码的sqrt 使用牛顿拉夫森来做到这一点 是的 我知道 fsqrt 但CPU是如何做到这一点的呢 我无法调试硬件 现代 CPU 中的典型 div sqrt 硬件使用 2
  • 计算两点之间的最短路线

    过去几周我一直在开发一款多人 HTML5 游戏 使用nodejs and websockets 我已经被这个问题困扰了一段时间 想象一下 我用数组实现了这个平铺地图 如下所示 1 or 棕色瓷砖 路上有障碍物 玩家无法通过 0 or 绿色瓷
  • 具有多个谓词的 C++11 算法

    功能如std find if来自algorithmheader 确实很有用 但对我来说 一个严重的限制是我只能为每次调用使用 1 个谓词count if 例如给定一个像这样的容器std vector我想同时应用相同的迭代find if 多个
  • 子序列和

    给定一个整数数组 例如 1 2 3 1 查找是否存在总和为0并返回它 例如 1 2 3 or 2 3 1 检查每个子序列是O n 2 这效率太低了 有改进的想法吗 创建一个新数组 其中每个元素等于前一个元素加上该元素的总和 Input 1
  • 找到一条穿过任意节点序列的最短路径?

    In 这个先前的问题 https stackoverflow com questions 7314333 find shortest path from vertex u to v passing through a vertex wOP询
  • 有 JavaScript 的微积分库吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有人知道 JavaScript 的微积分库吗 我做了一些谷歌搜索 但没有想出任何东西 我申请了 Wolf
  • 归并排序中递归树的高度log(n)+1是怎么来的

    我按照 stackoveflow 的建议阅读了一些问题和答案 我正在遵循 cormen 的 算法简介 一书进行自学 那本书里已经解释得很清楚了 但唯一没有解释的是如何在合并排序分析中计算树的高度 如果在后面的章节中对此进行解释的话 我仍然在
  • 大数据使用什么数据结构

    我有一个包含一百万行的 Excel 工作表 每行有 100 列 每行代表一个具有 100 个属性的类的实例 列值是这些属性的值 哪种数据结构最适合在这里使用来存储数百万个数据实例 Thanks 这实际上取决于您需要如何访问这些数据以及您想要
  • 在java中使用BUBBLE SORT对二维字符串数组进行排序

    类似的问题已经被问过 但从来没有关于二维字符串数组 因此在尝试了很长时间之后我找不到我想要的 我正在尝试使用 BubbleSort 对 java 中的 2D 字符串数组进行排序 作为输入 我收到一个二维字符串数组 一个表 以及您应该排序的
  • 如何用约束标记一大组“传递群”?

    在 NealB解决方案之后进行编辑 与以下解决方案相比 NealB的解决方案非常非常快任何另一个 https stackoverflow com q 18033115 answers and 提出了关于 添加约束以提高性能 的新问题 Nea
  • n 或 nlog(n) 比常数时间或对数时间更好吗?

    在 Coursera 上的普林斯顿教程中 讲师解释了遇到的常见增长顺序函数 他说 线性和线性算术运行时间是 我们努力的目标 他的推理是 随着输入大小的增加 运行时间也会增加 我认为这是他犯了错误的地方 因为我之前听过他提到线性增长顺序对于高
  • 为什么 C# Math.Ceiling 向下舍入?

    我今天过得很艰难 但有些事情不太对劲 在我的 C 代码中 我有这样的内容 Math Ceiling decimal this TotalRecordCount this PageSize Where int TotalRecordCount

随机推荐

  • 防止反应悬念隐藏内容

    我用谷歌搜索 观看了很多视频来实现类似 YouTube 加载的功能 如下面的屏幕截图所示 因此 我有基于路线的导航 其中有延迟加载 因此一切正常 但在加载内容时 反应悬念将使组件显示 无 因此它在屏幕上变得不可见 只有后备组件可见 我想让内
  • 在没有jquery的情况下更改页面滚动时的背景颜色?

    我试图让过渡工作 以便背景颜色根据页面 即位置淡入另一种颜色 由具有相同类的div触发 在这里找到了一些js http codepen io Funsella pen yLfAG 它在桌面上完全按照我想要的方式工作 但它在 iPad 上崩溃
  • Parallel.ForEach 与 HttpClient 和 ContinuousWith

    我有一个方法尝试从多个 URL 并行下载数据 并返回一个IEnumerable反序列化类型 该方法如下所示 public IEnumerable
  • 如何更改python字符串中最后一个字母的大小写?

    所以我想将字符串中的最后一个字符更改为小写 下面的代码是我用来向后打印字符串的方法 但是列表将最后一个字符保留为大写 我不知道如何解决这个问题 if s 1 x new last index len s 1 for i in range l
  • 插入符中的逻辑回归 - 无截距?

    使用 caret 包在 R 中执行逻辑回归 并尝试强制零截距 使得 x 0 处的概率为 0 5 在其他形式的回归中 似乎您可以使用unegrid关闭截距 但这没有逻辑回归的功能 有任何想法吗 model lt train y 0 x dat
  • 将wpf窗口打印到pdf文件

    我需要从 wpf 窗口构建 pdf 文件 该窗口包含一个带有一些绘图的画布以及一些带有数据的文本框和标签 一位朋友告诉我使用水晶报表 但对我来说似乎不是一个好的解决方案 我想在画布上打印图像并用文本框和标签的数据写入一些行 我需要一个非付费
  • 独立 VS 2010 C++ 程序

    我已经很久没有使用 VS 2010 和 C 了 当我重新开始使用它时 我遇到了去年困扰我的同样的问题 我编译的 exe 运行得不好没有正确的 C 运行时的旧机器 我什至不知道给他们什么链接 我告诉他们安装this他们收到错误消息 该程序无法
  • 如何在 AEM 6.1 中创建系统用户 (rep:SystemUser)?

    在 AEM 6 1 上 我尝试创建一个系统用户 rep SystemUser 谁能帮我 我需要这个系统用户映射到 OSGI 中的一个服务 我想用它来将一些数据写入 aem 内容 我可以在 CRX 中的以下位置看到 系统用户 home use
  • 在 C'# 中以编程方式获取所有 TFS 分支

    我正在尝试以编程方式获取 TFS for Visual Studio 2013 中所有分支的列表 经过一些研究 我发现此博客详细介绍了如何获取分支 显示 TFS 2010 中的所有分支层次结构 我修改了代码 将所有内容存储在列表中 priv
  • MPICH:如何发布_名称以便客户端应用程序可以查找_名称?

    在 Windows 1 4 1p1 中使用 MPICH 学习 MPI 时 我发现了一些示例代码here 最初 当我运行服务器时 我必须复制生成的port name并用它启动客户端 这样 客户端就可以连接到服务器了 我修改它以包括MPI Pu
  • 魔法记录导入(下一步)

    我在标题中添加了下一步 因为这与我之前的问题不同 标题几乎完全相同 我有一个Person entity Person name mappedKeyName FullName email mappedKeyName EmailAddress
  • 每天在两列范围之间的数据框中添加行

    我需要知道按房型划分的预订数量 我有这个 DataFrame 其中包含每个预订的开始和结束及其房间类型 date from date to room type 0 2017 08 07 2017 08 12 SUI 1 2017 08 09
  • 为什么 Xcode 4.3.2 存档时会挂起?

    当我尝试归档构建时 xcode 因彩色旋转死亡之轮而挂起 它曾经工作正常 但我无法再浏览存档 除非我手动删除存档文件 不过 我可以毫无问题地构建一个设备 我手动删除了存档中的所有内容 通过删除实际的存档文件 并且存档 组织器窗格显示正常 因
  • 提供的注册令牌未注册

    我正在尝试通过 Google 云功能发送 iOS 推送通知 但它返回错误The provided registration token is not registered 但我已经通过调试我的应用程序进行了检查 并且 FCM 注册令牌是正确
  • MySQL:选择前n个最大值?

    我对需要返回特定列上具有最大值的前 N 行的查询感到非常困惑 例如 如果行N 1 N N 1具有相同的值 我必须返回吗just top N or top N 1 rows 如果你这样做 select from t order by valu
  • 渲染透明外壳

    假设我正在渲染神奇女侠驾驶她的隐形喷气机 射流由多个网格组成 大部分是透明的 在透明网格重叠的地方 它变得更加不透明 我不想有这种重叠 这样透明部分仍然有阴影 但材质会丢弃其他片段后面的透明片段 就好像神奇女侠坐在透明的外壳内一样 也许一个
  • 下载并使用现代 CMake 构建 Lua

    让我们尝试通过 cmake 构建 lua 动机 cmake 通过 CLion 等 IDE 获得更多关注和支持or甚至视觉 Studio 2017 及更新版本 如果您想提供独立于平台的开源并促进整个构建过程 那么这非常有用 现在的问题是创建一
  • 如何在 Angular 中定义枚举类型以不违反 tslint typedef 规则

    为了能够在模板中使用枚举 我们在 ts 文件中编写以下代码 在工作流程Progress ts中 export enum WorkflowProgress cancelled 0 inProgress done 在组件 ts中 export
  • python中numpy多维数组的非相邻切片

    我有一个多维数组 a a np random uniform 1 10 2 4 2 3 10 10 对于维度 4 6 我有 3 个列表 其中包含用于切片数组 a 的该维度的索引 dim4 0 2 dim5 3 5 9 dim6 1 2 7
  • 打印所有对 n 个整数求和的方法,使它们的总和达到给定的和。

    我正在尝试提出一种算法 该算法将打印出对 N 个整数求和的所有可能方法 以便它们总计达到给定值 例子 打印所有对 4 个整数求和的方法 使它们的总和为 5 结果应该是这样的 5 0 0 0 4 1 0 0 3 2 0 0 3 1 1 0 2