gpt4 book ai didi

java - 真值表数组

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:29:50 25 4
gpt4 key购买 nike

我一直在思考如何开始编写代码。我希望能够做到以下几点。这是一个经典的抛硬币问题如果我翻转两次,结果是:
T T
T F
傅立信
F F
我希望能够一次创建一个包含一个结果的数组。为了更好地说明这一点,它应该是这样的(顺便说一句,我正在使用 Java):
boolean 值[] cases = new boolean[numberOfFlips]

第一次的案例会有:T T。
在我用这个结果完成其他计算后,我想继续进行,现在进行案例: T F 并继续运行其他计算。
有人可以指导我正确的方向吗?我将不胜感激。任何语言的算法都适合我。感谢您的时间! (:

最佳答案

在 Java 中有许多存储二进制数据的方法,但不清楚您要存储什么。如果你想存储 N 翻转的所有可能组合,那么你需要和数组 new boolean[2^N][N]

请记住,Java 有另一种提高权力的语法。

更新

下面是存储N次翻转的所有组合的代码。

从中你也会了解如何生成一个组合:从组合序数的二进制表示。查看评论。

    // number of flips
// limit it by 31
int N = 3;

// number of combinations
// using bitshift to power 2
int NN = 1<<N;

// array to store combinations
boolean flips[][] = new boolean[NN][N];

// generating an array
// enumerating combinations
for(int nn=0; nn<NN; ++nn) {

// enumerating flips
for( int n=0; n<N; ++n) {

// using the fact that binary nn number representation
// is what we need
// using bitwise functions to get appropriate bit
// and converting it to boolean with ==
flips[nn][N-n-1] = (((nn>>n) & 1)==1);

// this is simpler bu reversed
//flips[nn][n] = (((nn>>n) & 1)==1);

}

}

// printing an array
for(int nn=0; nn<NN; ++nn) {

System.out.print("" + nn + ": ");

for( int n=0; n<N; ++n) {
System.out.print(flips[nn][n]?"T ":"F ");
}
System.out.println("");
}

关于java - 真值表数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13776428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com