gpt4 book ai didi

c - 给定一个前缀 bool 表达式,构造其真值表(使用 C )

转载 作者:行者123 更新时间:2023-11-30 19:32:55 25 4
gpt4 key购买 nike

给定表达式最多有 26 个变量 'A','B',.....,'Z',

和 3 个运算符,'&'、'|'、'^'(异或)。

例如:输入4 7 &|AB|CA

4表示变量的个数(A,B,C,D)

7表示前缀表达式的长度。

输出:

A B C D 输出

0 0 0 0 0

0 0 0 1 0

0 0 1 0 0

.

.

现在我有一个计算前缀表达式的算法:

int Expr(){
char c = getchar();
if c is an operator
op1 = Expr()
op2 = Expr()
return op1 c op2
else if c is a variable
return the value of c
}

我的问题是如何使变量 A,B,C,D... 变为 0 或 1,

并执行n^2次来构建真值表。

我尝试设置一个数组[26]={'A',...,'Z'}来匹配输入,

但是没有成功。

最佳答案

当然可以。一个简单的解决方案依赖于由 0 到 2^n-1 之间的数字 v 表示的“n 位 vector ”。

你用循环枚举它们

for (int v = 0; v < (1<<n); v++) {
...
}

然后使用 A 的最右边的位。当且仅当 v & 1 不为 0 时,它被设置。

如果 (v >> 1) & 1 不为零,则设置 B。 C 是 (v >> 2) & 1

实际上,对于任何字符字母;它是(v >> (letter-'A')) & 1

关于c - 给定一个前缀 bool 表达式,构造其真值表(使用 C ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46607092/

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