【发布时间】:2011-01-08 11:13:43
【问题描述】:
如何在长度为 n 的位数组中生成所有可能的位组合。如果我从数组中的所有零开始,则有 n 种可能性来放置第一位,对于这 n 种可能性,有 n-1 种可能性来放置第二位。单位所有 n 位都设置为 1。但到目前为止,我还没有设法将它编程出来。
还有很多人指出,我可以通过从 0 数到 (2^n)-1 并以二进制打印数字来做到这一点。这将是解决问题的一种简单方法,但是在这种情况下,我只是让机器计数而不是告诉它在哪里放置。我这样做是为了学习,所以我想知道如何编写一个放置方法。
【问题讨论】:
-
@Fred 如果我知道一个 lisp 答案和一个 C# 答案,我可以添加“[lisp]”和“[c#]”,还是应该将所有这些替换为“[language-agnostic] “?
-
@Johannes:我很想看到 LISP 和 C# 解决方案 :-) 我添加了 C++ 标签,因为 Nils 在 C++ 聊天中发布了这个问题,所以我假设他对 C++ 解决方案感兴趣。我添加了 Haskell 标签,以便真正的 Haskell 程序员可以改进我的 Haskell 解决方案。
标签: c++ algorithm language-agnostic haskell