加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 真值表数组

发布时间:2020-12-15 08:48:28 所属栏目:Java 来源:网络整理
导读:我一直坚持如何开始编码. 我希望能够做到以下几点.这是经典翻转硬币问题 如果我翻了两次,那就是: T T. T F. F T. F F. 我希望能够一次创建一个包含一个结果的数组.为了更好地说明这一点,它应该是这样的(我正在使用 Java): boolean [] cases = new boolean
我一直坚持如何开始编码.
我希望能够做到以下几点.这是经典翻转硬币问题
如果我翻了两次,那就是:
T T.
T F.
F T.
F F.
我希望能够一次创建一个包含一个结果的数组.为了更好地说明这一点,它应该是这样的(我正在使用 Java):
boolean [] cases = new boolean [numberOfFlips]

第一次案件将:T T.
在我完成了对此结果的其他计算之后,我想继续前进并制作案例:T F并继续运行其他计算.
有人可以指导我正确的方向吗?我将不胜感激.
任何语言的算法都适合我.感谢您的时间! (:

解决方法

有许多方法可以在Java中存储二进制数据,目前还不清楚,您想要存储什么.如果你想存储N个翻转的所有可能组合,那么你需要和数组新布尔[2 ^ N] [N]

请记住,Java有另一种提升权力的语法.

UPDATE

以下是存储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("");
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读