c - 如何保存和比较 boolean 可满足性表达式中的值?

标签 c algorithm boolean

在这样的问题中,enter image description here

如果我在 C 中使用递归解决一个问题,我必须找到满足表达式的 X1、X2 和 X3 的所有 TRUE 或 FALSE 值,我将如何比较对齐(无论变量是否不是第一个子句中的 X2)与实际的真值和假值?我可以使用 0 和 1 并递归地尝试所有排列,但我不确定如何实际计算它。

最佳答案

我不完全确定你的问题,但你有 4 个 boolean 值,可以用 4 位表示。通过利用积分的内部表示,您可以在 for 循环中检查所有可能的组合:

for( int i = 0; i < 16; ++i ) // That's 2^4
{
    int x1 = i & 1;
    int x2 = i & 2;
    int x3 = i & 4;
    int x4 = i & 8;

    if( ( x1 || !x2 || !x3 ) && ( x1 || x2 || x4 ) )
        ... the expression holds for this combination, store it somewhere ...
}

关于c - 如何保存和比较 boolean 可满足性表达式中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8089674/

相关文章:

javascript - 将复选框绑定(bind)到 boolean 变量

java - 为什么我在这个 boolean 数组上收到 NullPointerException?

c - 变量/数组的行为

c - 在 c 中将 bool 的结果打印为 'false' 或 'true' 的最佳方法?

c++ - 比较从字符串转换的浮点值与文字

c++ - 如何在 C++ 中为 Backus Naur Form 创建规则?-

c - 检查符号链接(symbolic link)的目标是否存在的方法是什么?

为不同的 x 值找到 ax + b 的最大值的算法

algorithm - 多个排名列表的总排名

java - 为什么 Java 没有逻辑运算符 && 和 ||使用数组?