很多时候,你有一个问题,属性A可以是真或假,属性B也可以是真或假,等等。我们想要测试A的每个组合都是正确的,而B是错误的,等等。因此,例如,我们可能需要以下列表:在C++中生成组合列表的最简单方法是什么?
[true,true,true]
[true,true,false]
[true,false,true]
[true,false,false]
[false,true,true]
[false,true,false]
[false,false,true]
[false,false,false]
在Haskell或Python,这可以通过列表的产品功能来完成。
我的问题是,什么是产生这种最简单的和/或最快的方法?我一直都是通过将数字转换为二进制来完成的,然后将二进制数据转换为数组。但是这看起来很麻烦,因为十进制到二进制转换并不是完全无关紧要的,我们还需要担心用前导零填充二进制以正确填充数组。
我已经实现和重新实现这种功能在不同环境下足够的时间来想,有没有办法很简单,你可以从头开始实现它在必要的时候 - 没有真正不必考虑?
更好,谢谢@Loki – 2012-03-07 01:14:59
不需要位移! – vvnraman 2012-03-07 13:26:48
@mwraman,你是对的。这些转变来自于我在返回0和1时的原始实施。 – 2012-03-07 17:31:00