1

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

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

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

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

4

1 回答 1

4

使用一种生成所有排列而不重复的算法怎么样?这样一来,您就不必首先检查它们。

谷歌搜索“算法生成排列”会出现几十个参考资料,让你开始。例如排列生成方法

于 2009-02-03T00:18:18.607 回答