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. 解决方法
有许多方法可以在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(""); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |