递归 - 如何生成给定 n 和 k 的所有序列

2024-03-10

给定 n 和 k,我需要生成以下所有序列:

n=5, k=2
0,1,2
0,1,3
0,1,4
1,2,3
1,2,4
2,3,4

另一个例子:

n=5, k=3
0,1,2,3
0,1,2,4
0,1,3,4
0,2,3,4
1,2,3,4

我认为这可以使用递归来解决,但卡住了。需要帮忙


看起来您已经知道如何生成序列,因此只需描述您在头脑中使用的规则即可。然后从那里向后运行程序。下面我们介绍如何生成固定大小的尺寸组合k从任何可迭代的,it -

  1. 如果要选择金额,k, 为零,返回空组合,()
  2. (感应式)k至少为一。如果可迭代,it,是空的,没有什么可以选择的。停止迭代
  3. (感应式)k是至少一且可迭代对象具有至少一个元素。选择可迭代的第一个元素并将其添加到子问题的每个组合中,(it[1:], k - 1)。并且不要选择这个元素并从子问题中产生,(it[1:], k).
def choosek(it, k):
  if k == 0:                            # 1
    yield ()
  elif not it:                          # 2
    return
  else:                                 # 3
    for c in choosek(it[1:], k - 1):
      yield (*c, it[0])
    yield from choosek(it[1:], k)
for c in choosek("????????????????", 2):
  print("".join(c))
????????
????????
????????
????????
????????
????????
for c in choosek("????????????????", 3):
  print("".join(c))
????????????
????????????
????????????
????????????
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

递归 - 如何生成给定 n 和 k 的所有序列 的相关文章

  • 在 O(n) 时间内运行的指数乘法算法?

    我正在读一本算法教科书 我被这个问题难住了 假设我们要计算值 x y 其中 x 和 y 为正数 分别具有 m 和 n 位的整数 解决该问题的一种方法是执行 y 1 乘以 x 你能给出一个仅使用 O n 乘法步骤的更有效的算法吗 这会是一个分
  • 给定与总和匹配的长度的唯一 3 位数字 (-1,0,1) 序列的数量

    假设您有一个长度为 n 即空格数 的垂直游戏板 你有一个三面骰子 有以下选项 前进一 停留和后退 如果您低于或高于棋盘游戏空间的数量 则该游戏无效 一旦到达棋盘末端 唯一有效的动作就是 停留 给定确切的骰子投掷次数 t 是否可以通过算法计算
  • Java:使用indexOf方法根据另一个数组对数组进行排序

    我想根据另一个数组 索引 的排序顺序迭代两个数组 A B 在本例中为 10 34 32 21 String A a b c d String B e f g h int indexes 10 34 32 21 为这里的坏例子道歉 我已经更新
  • “foop”:命名约定?它是“foo”的辅助递归函数;后缀“p”是什么意思?

    我遇到了以下代码片段 函数定义 choose x xs choosep x xs where choosep x x choosep x x choosep x xs choosep x xs in 柯里编程语言 http en wikip
  • 以一定角度遍历二维数组

    通常我们按行或列遍历数组 但这里我想以角度遍历它 我会尝试解释我的意思 因此 假设角度是 45 度 那么它会搜索为 0 0 then 0 1 1 0 then 0 2 1 1 2 0 等等 抱歉 无法上传图像 因为我是新用户 不允许这样做
  • 稀疏矩阵中的最大和子矩形

    求一个子矩形中的最大和NxN矩阵可以完成O n 3 正如其他帖子中指出的 使用 2 d kadane 算法的时间 然而 如果矩阵是稀疏的 具体来说O n 非零条目 可以O n 3 时间被打败了吗 如果有帮助的话 对于我感兴趣的当前应用程序
  • 如何停止 CTE 中的递归?

    我有一个数据库表 如下所示 ID PredecessorID Data 43b1e103 d8c6 40f9 b031 e5d9ef18a739 null 55f6951b 5ed3 46c8 9ad5 64e496cb521a 43b1e
  • 方案中的尾递归幂函数

    我在方案中编写尾递归幂函数时遇到问题 我想使用辅助函数来编写该函数 我知道我需要一个参数来保存累计值 但在那之后我就陷入了困境 我的代码如下 define pow tr a b define pow tr h result if b 0 r
  • 加密成本高,解密成本低

    我希望该用户 攻击者加密数据并发送给服务器 现在我想要一种与标准算法完全相反的算法 使用快 难以解密 即很难使用服务器发送的密钥来加密密码等数据 以防止随机攻击 但很容易解密这样服务器在验证用户时消耗的时间非常少 但是对于攻击者来说 每次使
  • 如何在 PHP 中递归删除目录及其全部内容(文件+子目录)? [复制]

    这个问题在这里已经有答案了 如何在 PHP 中删除目录及其全部内容 文件和子目录 手册页中的用户贡献部分rmdir http www php net rmdir包含一个不错的实现 function rrmdir dir if is dir
  • 如何从二叉搜索树中均匀随机地返回节点?

    给定一个 BST 可能平衡也可能不平衡 如何能够均匀地随机返回 任何 节点 一个限制是您不能使用外部索引数据结构 您必须以每个节点都有平等被访问的机会的方式遍历树 这个问题让我困惑了好一阵子 如果我们确实可以使用外部哈希表 指针 我们可以对
  • 使到 n 个点的集合的欧氏距离之和最小的点

    我有一组点W x1 y1 x2 y2 xn yn 在 2D 平面上 你能找到一种算法 将这些点作为输入并返回一个点 x y 在 2D 平面上 距以下点的距离之和最小W 换句话说 如果 di Euclidean distance x y xi
  • 跟踪 C++ 中递归函数被调用的次数

    我正在尝试编写一个程序 该程序具有一个参数是字符串向量的函数 我想在该函数上使用递归 但每次调用该函数时 我想更改参数 例如 fun stringArray i 其中 i 是调用该函数的次数 因此 以更简单的方式 如下所示 但我需要跟踪函数
  • 在 Java 中实现排列算法的技巧

    作为学校项目的一部分 我需要编写一个函数 该函数将接受整数 N 并返回数组 0 1 N 1 的每个排列的二维数组 该声明看起来像 public static int permutations int N 该算法描述于http www usn
  • 快速求解子集和

    考虑这种解决子集和问题的方法 def subset summing to zero activities subsets 0 for activity cost in activities iteritems old subsets sub
  • 确定解决迷宫问题的最小线段数

    我有一个问题 我需要定义一个具有最少数量的顶点的多边形 该多边形与不透明的图像中的每个像素相交或包含每个像素 令 N 为图像中的像素数 我唯一的假设是图像的边界 孔 内不能包含透明像素 并且至少有两个像素是不透明的 举个例子 假设我有以下图
  • 快速搜索压缩文本文件

    我需要能够在大量压缩文件 txt 中搜索文本 压缩可能会改变为其他东西 甚至成为专有的 我想避免解压所有文件并压缩 编码 搜索字符串并在压缩文件中搜索 这应该可以通过对所有文件使用相同的码本使用霍夫曼压缩来实现 我不想重新发明轮子 所以 任
  • 我需要一个支持高效随机访问和 O(k) 插入和删除的容器

    我再次尝试问同样的问题question https stackoverflow com questions 3808708 delete parts of a dynamic array and grow other 但我最终提出了一个不同
  • 如何将一组重叠范围划分为不重叠范围?

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

    我有一个应用程序 其中有一系列不重叠的固定宽度间隔 每个间隔都有一个给定的键 每个间隔具有相同的宽度 并且可以存在连续的间隔 本质上 我想以最小化单独间隔的数量的方式对间隔和键进行分组 这可以通过合并具有相同键的连续间隔或查找匹配间隔并将它

随机推荐

  • 有没有办法通过为每个测试打开浏览器实例来并行运行量角器测试?

    我的量角器测试面临同步问题 我想与我的实际设置相比并行运行我的测试 事实上 目前我的测试一个接一个地运行 我知道如何使用 TestsNG 执行此操作 但不确定如何使用 Jasmin Framework 执行此操作 要在两个浏览器之间分配测试
  • IDEA Groovy 测试类已经存在

    IDEA 向我的 groovy 类发出警告 类 MyClassTest 已存在于 my class package 中 当我运行测试时 它似乎也没有很好地保持类的更新 我将添加一个保证失败或成功的断言 直到稍后它才会识别它 到目前为止似乎是
  • 确定 Java 中的有效日期

    我有一个家庭作业 要求用户以 mm dd yyyy 格式在 Java 中输入日期 然后确定输入的日期是否有效 我已经能够成功地对每个月 除了二月 执行此操作 因为您必须考虑闰年 我有这个代码 import java util Scanner
  • 使用 WPF 将二进制文件检索回图像和数据库并保存到文件夹中

    我已成功将图像转换为二进制并使用 linq to sql WPF 将其保存到数据库中 现在我想将其检索回图像格式并将其保存到计算机中的特定文件夹中 我读过很多博客和文章 它们从数据库检索图像二进制文件 然后将其显示到 PictureBox
  • 如何在Python中正确编码json转储[重复]

    这个问题在这里已经有答案了 我有一个 python 3 脚本 应该从 csv 文件获取一些数据并将其写入 json 文件 在我的处理过程中 编码是正确的 因此德语变音 或度数符号 就像它们本来的样子 coding cp1252 在头部 但是
  • 使用布尔索引复制或查看 numpy 子数组

    给定一个 2D numpy 数组 即 import numpy as np data np array 11 12 13 21 22 23 31 32 33 41 42 43 我需要创建一个新的子数组 或者根据所需行和列的两个掩码向量修改选
  • 在 Python ConfigParser 中按字母顺序导出

    是否有任何解决方案可以强制 RawConfigParser write 方法按字母顺序导出配置文件 即使原始 加载的配置文件已排序 模块也会任意地将节和选项混合到节中 并且手动编辑巨大的未排序配置文件确实很烦人 PD 我正在使用 pytho
  • 为什么 WriteResultChecking 默认设置为 NONE?

    根据Spring Data MongoDB 文档 http docs spring io spring data mongodb docs current reference html mongo template writeresultc
  • 在 TFS 2012 中运行 Jasmine 的 Chutzpah 找不到测试中的引用文件

    我正在使用 Chutzpah 来运行我们的 Jasmine 测试 我已将 Chutzpah dll 添加到解决方案中 并更新了构建以运行 js 测试 项目结构如下 MyApp Web Scripts App Home DateControl
  • AVPlayer播放ts文件

    我想从服务器播放 ts 文件 void play NSURL url NSURL URLWithString http 10 0 0 18 11 ts player AVPlayer alloc initWithURL url player
  • 使用 Datagridview C# 进行多线程处理

    这里我正在做一个检查用户名的过程 我创建了一个 datagridview 并从文本文件加载了数据 因此 datagridview 在前两列中包含用户的名字和姓氏 我需要做的是逐行读取这些值 并发现第一个和最后一个没有相同的名称 这些操作是在
  • 当你没有 Linq 时像 Linq 一样查询

    我目前正在开发一个项目 但它目前仅支持 net Framework 2 0 我喜欢linq 但由于框架版本的原因我无法使用它 我想要的并不是 ORM 方面的东西 而是 Linq 的 可查询性 这甚至是一个词吗 到目前为止最接近的是llblg
  • Laravel 无法连接到数据库

    我正在跟踪快速入门指南 http laravel com docs quick displaying data 并到达实际连接到数据库以获取用户表的部分 并收到以下错误 SQLSTATE 28000 1045 用户 root localho
  • a、&a 和 &a[0] 之间的类型区别是什么?

    include
  • 如何从 Dom4j Node.selectObject 或 Node.selectNodes 获取字符串列表

    希望你有美好的一天 Dom4j javadoc 表单Node selectObject String xpathExpression 说如下 返回的对象可以是一个或多个 Node 实例的列表 也可以是标量对象 例如String或 Numbe
  • TortoiseHg 更新后 Mercurial 无法工作

    我最近将 TortoiseHg 更新到 2 0 3 使用 Mercurial 1 8 2 更新后 Mercurial 不再通过命令行 Windows 7 x64 运行 但可以通过 TortoiseHg GUI 运行 尝试通过命令行使用任何
  • 如何从 Instagram API 获取历史数据

    我正在制作一个 Instagram 分析网络应用程序 我仔细阅读了所有 Instagram API 端点 但找不到任何方法来获取历史数据 即一段时间内的关注者 我所需要的只是一个类似日期的东西 附加到每个关注者对象上 不过 有一些 Inst
  • 如何控制rpmbuild的buildroot和安装目录

    我对 rpmbuild 中的一些目录感到困惑 1 buildroot 用于存储最终用户安装二进制包时应安装的文件 问题 如何控制这个目录 构建根是什么意思 cat 3 spec BuildRoot opt abc prep echo bui
  • 数字轴 setTickUnit 包含指定数字

    我使用 JFreeChart 显示正态分布 并将刻度数更改为标准差 但我也希望在刻度出现的中间始终存在 平均 值 交叉发布 所以标准差 2 平均值 1 3 1 1 3 5 标准差 5 平均值 15 0 5 10 15 20 25 30 JF
  • 递归 - 如何生成给定 n 和 k 的所有序列

    给定 n 和 k 我需要生成以下所有序列 n 5 k 2 0 1 2 0 1 3 0 1 4 1 2 3 1 2 4 2 3 4 另一个例子 n 5 k 3 0 1 2 3 0 1 2 4 0 1 3 4 0 2 3 4 1 2 3 4 我