问题标签 [permutation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
428 浏览

c# - 删除大文本文件中的重复项

我一直在尝试计算一个 长的词(反反建制主义)的所有独特排列,虽然我可以计算这些词的排列,但我在停止产生重复时遇到了问题。

通常我只会List<T>.Contains()在我的字符串上运行该方法,但是排列列表变得如此之大,我无法将其保存在内存中。我早些时候犯了这个错误,并设法用尽了我电脑中的所有 8GB 内存。为了防止这种情况再次发生,我更改了代码以将计算出的排列附加到文件中并从内存中释放它。

我的主要问题是:如何防止重复排列被添加到我的文件中而不将整个内容加载到内存中?是否可以选择性地加载,例如,前几兆字节,扫描,然后继续直到文件完成,或者我应该寻找不同的方向?

这不是作业,我的数学作业给出了一个假设情况,计算机每秒可以计算 30 个排列,并让我弄清楚计算所有排列需要多长时间。这不是问题,我也不需要帮助,我只是想知道现代计算机执行相同任务需要多长时间。

0 投票
4 回答
6566 浏览

algorithm - 创建具有特定位数设置的多个数字

问题

我需要创建 32 位数字(有符号或无符号都无关紧要,无论如何都不会设置最高位)并且每个数字都必须设置给定数量的位。

天真的解决方案

最简单的解决方案当然是从零开始。在一个循环内,数字现在增加一,对位的数量进行计数,如果计数具有所需的值,则将数字存储到列表中,如果不是,则循环重复。如果找到足够的数字,则停止循环。当然,这工作得很好,但是一旦所需的位数变得非常高,它就会非常慢。

更好的解决方案

设置(假设)5 位的最简单数字是设置前 5 位的数字。这个号码可以很容易地创建。在一个循环中,第一位被设置并且数字向左移动一个。这个循环运行了 5 次,我找到了第一个设置了 5 位的数字。接下来的几个数字也很容易创建。我们现在假设这个数字是 6 位宽,并且最高的没有设置。现在我们开始将第一个零位向右移动,因此我们得到 101111、110111、111011、111101、111110。我们可以通过在前面添加另一个 0 并重复此过程来重复此过程。0111110、1011110、1101110 等。然而,这样数字的增长速度会比必要的快得多,因为使用这种简单的方法,我们会忽略像 1010111 这样的数字。

那么有没有更好的方法来创建所有可能的排列,一种通用的方法,可以使用,不管下一个数字有多少位,也不管我们需要设置多少位?

0 投票
2 回答
7442 浏览

algorithm - 向量的排列

假设我有一个向量:

及其索引的排列:

有没有一种有效的方法可以根据排列得到:

最多使用 O(1) 额外空间?

0 投票
4 回答
351 浏览

c - 置换 i 和 T[i]

假设我有一个 int T 数组,我正在寻找一种置换 i 和 T[i] 的就地算法

我有:[3 2 0 1] (a)

我想要:[2 3 1 0] (b)

例如。在 (b) T[0] = 2 中,因为在 (a) T[2] 中等于 0。

我期待找到一个简单的 O(n) 时间、O(1) 空间算法,但我找不到。有任何想法吗 ?

笔记 :

  • 有一个单一的数组(a)在之前(b)在之后。

  • 数组中的值属于 [0, N[, 没有重复。

0 投票
7 回答
28150 浏览

perl - 如何在 Perl 中生成数组的所有排列?

n!在 perl 中生成数组的所有排列的最佳(优雅、简单、高效)方法是什么?

例如,如果我有一个数组@arr = (0, 1, 2),我想输出所有排列:

它可能应该是一个返回迭代器的函数(延迟/延迟评估,因为n!可能变得如此之大),因此可以这样调用它:

0 投票
3 回答
989 浏览

string - 我的 C 程序中生成字符串所有可能排列的错误在哪里?

我一直在尝试编写一个 C 程序来生成字符串的所有可能排列(例如下面代码中的 123)。我成功了,但它在每次可能的排列后都会产生一些垃圾值。请帮我找出可能的原因。它与初始化有关吗?代码:

0 投票
2 回答
821 浏览

algorithm - 在不使用列表的情况下置换二叉树

我需要找到一种算法来生成二叉树的所有可能排列,并且需要在不使用列表的情况下这样做(这是因为树本身带有无法转换为列表的语义和约束)。我找到了一种适用于高度为 3 或以下的树的算法,但是每当我达到更高的高度时,我会在每个添加的高度中丢失一组可能的排列。

每个节点都携带有关其原始状态的信息,以便一个节点可以确定是否已针对该节点尝试了所有可能的排列。此外,该节点携带有关天气的信息,它是否已被“交换”,即它是否已经看到它的子树的所有可能排列。树是左居中的,这意味着右节点应该总是(除了在某些情况下我不需要为这个算法介绍)是叶节点,而左节点总是叶节点或分支。

我现在使用的算法可以这样描述:

算法的期望行为是这样的:

等等...

0 投票
13 回答
22162 浏览

c# - 数组列表数组的C#排列?

我有一个 ArrayList[] myList 并且我正在尝试创建数组中所有值排列的列表。

示例:(所有值都是字符串)

myList 的计数可以变化,因此事先不知道其长度。

我希望能够生成类似于以下所有排列的列表(但有一些额外的格式)。

这对我想要完成的事情有意义吗?我似乎无法想出一个好的方法来做到这一点,(如果有的话)。

编辑:
我不确定递归是否会干扰我以自己的方式格式化输出的愿望。抱歉,我之前没有提到我的格式是什么。

我想最终构建一个 string[] 数组,其中包含以下格式的所有组合:

对于“1 2 93”排列

我希望输出为“val0=1;val1=2;val2=93;”

我现在将尝试递归。谢谢Jokepu博士

0 投票
27 回答
199143 浏览

c# - 列出字符串/整数的所有排列

编程面试中的一项常见任务(尽管不是根据我的面试经验)是获取一个字符串或整数并列出所有可能的排列。

有没有一个例子说明这是如何完成的以及解决这个问题背后的逻辑?

我看过一些代码片段,但它们没有得到很好的评论/解释,因此很难理解。

0 投票
1 回答
960 浏览

c# - Creating string permutations

Why doesn't this produce the correct number of string permutations? For

it should print 27 different permutations.