使用 Python 实现序列的最小错排2024 年 8 月 29 日 | 4 分钟阅读 排列组合学中的错排是指一个排列,其中没有一个元素出现在其原始位置。例如,对于序列 [1, 2, 3, 4],错排会是 [2, 1, 4, 3],因为没有一个元素在其原始位置。 错排在数学、软件工程和密码学中的应用很有趣。找到给定序列的最小错排是一个常见问题。在这里,我们将探讨如何使用 Python 来确定序列的最小错排。 输入 输出 2 1 4 3 6 5 8 7 说明 在代码的第一部分,我们定义了一个名为 generate_derangement 的函数,该函数接受整数 N 作为输入。此函数负责生成从 1 到 N 的整数序列的最小错排。 我们首先初始化一个长度为 (N + 1) 的空列表 P 来表示序列。我们使用循环将 1 到 N 的整数填充到 P 中,从而正确创建整数序列。 接下来,我们初始化另一个与 P 长度相同的空列表 D 来表示错排。错排将基于序列 P 进行构建。 然后,我们进入一个以 2 为步长从 1 迭代到 N 的循环。此循环用于通过交换 P 中的相邻元素来构建错排,以确保没有元素出现在其原始位置。 循环内部有两种情况:
最后,我们遍历 D 列表并打印错排的元素,元素之间用空格分隔。 代码末尾的 if __name__ == '__main__': 块用于在脚本作为主程序运行时执行 generate_derangement 函数。在这种情况下,它会为 N = 8 生成最小错排并打印出来。 为了将最低有效元素(最小索引位置)移动到更有效的位置,我们将使用最小堆。我们将保留错排属性,同时执行此算法。 调用函数时,我们将使用提供的 sorted_sequence 作为参数。我们的输出将是最小错排序列列表,该列表与 sorted_sequence 列表没有任何共享元素。 输入 输出 [2, 1, 4, 3, 6, 7, 5] |
严肃的软件开发需要性能优化。在优化应用程序性能时,我们无法回避性能分析器。性能分析器通过监控生产服务器或跟踪方法调用的频率和持续时间来进行全方位的分析。以下教程将介绍使用Python的基础知识...
阅读 17 分钟
在本教程中,我们将学习如何使用 Python 内置的 fuzzyWuzzy 库匹配字符串,并通过各种示例确定它们的相似度。简介 Python 提供了几种比较两个字符串的方法。以下是几种主要方法。使用正则表达式 简单比较 使用 dfflib 但是...
阅读 6 分钟
在本文中,我们将讨论 Python 中的情感分析。这个应用程序再次证明了这种编程语言的多功能性。但在开始情感分析之前,让我们先了解一下我们都必须了解的背景知识——所以,这里我们将讨论——什么是...
5 分钟阅读
作物推荐系统是一种帮助农民就应种植的作物做出明智决策的工具。该系统考虑气候、土壤类型、灌溉和市场需求等多种因素,为农民提供个性化建议。本文将讨论如何构建...
5 分钟阅读
操作系统需要页面置换算法来采用分页技术来管理内存,以确定当添加新页面时哪个页面必须被移除。每当引用一个新页面但内存中尚不存在时,就会发生页面错误,并且...
阅读 8 分钟
网络工程变得越来越受欢迎,网络工程师可以使用各种各样的工具来自动化网络设置,这改变了游戏规则。假设我们仍然是这个领域的新手,下面的教程将通过展示来简化事情......
阅读9分钟
在本教程中,我们将学习如何使用 Python 读取和写入文件中的列表。众所周知,Python 使用列表来存储各种类型的数据,并且它是可变的。为了持久地存储数据,我们......
5 分钟阅读
Python 流 Python 流是用于特定数据处理范式的术语,涉及数据项在通过一系列处理管道时进行顺序处理。流允许数据处理是连续、有效且内存友好的,而无需将整个数据集加载到内存中...
11 分钟阅读
Bokeh 是 Python 的一个库,用于通过绘制图形和图表进行数据可视化。输出可以在不同平台上获得,例如 Notebook、HTML、JavaScript 和浏览器。Figure 类用于在图表上创建新图形,并且...
阅读 3 分钟
通过组合两个或多个不同的推荐系统,混合推荐系统提供了一种全面而周到的方法。它通过利用各种方法的优势并提供有益的用户体验,力求为客户提供更精确、更多样化和个性化的建议。本教程适用于...
阅读9分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India