【问题标题】:Whats the logic to print the truth table values given the x in 2^x?给定 2^x 中的 x 打印真值表值的逻辑是什么?
【发布时间】:2014-07-18 11:32:11
【问题描述】:

给定

x=2 行= pow(2,2)=4 和列=2

输出:

T T
T F
F T
F F

x=3 行= pow(2,3)=8 和列=8

输出:

T T T
T T F
T F T
T F F
F T T
F T F
F F T
F F F

等等。 可能是这样打印,或者创建一个 char 数组,其中包含 2^x 行和 x 列,并以 T/F 作为值。

我可以把它想象成列号 j - 变化应该发生在 pow(2,x-(j+1)) 之后

谢谢; 首选伪代码或java

【问题讨论】:

  • 到目前为止你得到了什么代码?
  • 你有没有尝试过做点什么?
  • 是的,我已经尝试了一些东西-正如我在帖子中所说的那样。在 pow(2,x-(j+1)) 之后,每列都会发生变化,所以如果 x=3 表示列 0 -after 4行和列 1 在 2 之后,列 3 在 1 之后。
  • 我可以考虑使用递归函数..但是如果我需要将它放入数组中,我不确定它是否可以工作..
  • 将 T 更改为 0,将 F 更改为 1,您将得到递增的二进制数字

标签: java algorithm logic


【解决方案1】:

递归:获取N-1 的表格并将T 添加到所有行,然后使用F 重复,得到N 的表格。

void Print(String Line, int N) {
  if (N== 0) println(Line); else { Print("T " + Line, N-1); Print("F " + Line, N-1); }
}

...
Print("", 5);
....

【讨论】:

  • 解释你在做什么以及为什么这样做。
【解决方案2】:

我想这可能对你有帮助:

public static void main(String args[]) {
        int size = 2;      // change the size ans get your truth table.
        generateTable(0, size, new int[size]);
    }

    private static void generateTable(int index, int size, int[] current) {
        if (index == size) {
            for (int i = 0; i < size; i++) {
                System.out.print(current[i] + " ");
            }
            System.out.println();
        } else {
            for (int i = 0; i < 2; i++) {
                current[index] = i;
                generateTable(index + 1, size, current);
            }
        }
    }

输出(当通过 size = 2):

0 0 
0 1 
1 0 
1 1 

【讨论】:

    【解决方案3】:

    怎么样:

    for(double x=Math.pow(2,col-1); x<Math.pow(2,col); x++)
        System.out.println(Integer.toBinaryString((int)x));
    }
    

    只需将 col 设置为您要输出的列数

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-15
      • 1970-01-01
      • 2021-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-28
      相关资源
      最近更新 更多