C++ if语句中的优化/减少条件表达式
目标是通过发现变量之间的值依赖关系来优化大条件表达式,以便减少逻辑OR语句 假设我们有以下条件:C++ if语句中的优化/减少条件表达式,c++,if-statement,optimization,C++,If Statement,Optimization,目标是通过发现变量之间的值依赖关系来优化大条件表达式,以便减少逻辑OR语句 假设我们有以下条件: if((A == 0 && B == 0) || (A == 0 && B == 1) || (A == 0 && B == 2) ... if(A == 0 && (B >= 0 && B <= 2)) 一定数量的时间。。。 有没有办法通过自动满足以下条件来减少此类示例: if((A == 0 &am
if((A == 0 && B == 0) || (A == 0 && B == 1) || (A == 0 && B == 2) ...
if(A == 0 && (B >= 0 && B <= 2))
一定数量的时间。。。
有没有办法通过自动满足以下条件来减少此类示例:
if((A == 0 && B == 0) || (A == 0 && B == 1) || (A == 0 && B == 2) ...
if(A == 0 && (B >= 0 && B <= 2))
可翻译为:
还有一点:
if((A == 0 && B == 0 && C == 0) || (A == 0 && B == 2 && C == 0) || (A == 0 && B == 4 && C == 0) || (A == 0 && B == 0 && C == 1) || (A == 0 && B == 2 && C == 1) || (A == 0 && B == 4 && C == 1))
将转变为:
if(A==0 && B%2==0 && C>=0 && C<=1)
如果(A==0&&B%2==0&&C>=0&&C
无法翻译为
if((A == 0 && B%2 == 0)
因为
等等离散数学可以帮助你(如果你是一名大学生,你可能已经知道,否则请检查)。然而,这只会帮助你简化条件,而不是像“%”这样的东西。你可以有“混合”或更复杂的模式,[[0,2],[0,4],[1,3],[1,5]
(B%2=a
)或(B+a)%3==1
。从您的示例来看,您似乎可以通过单个变量进行推理,因此测试一些预定义的模式(常数、范围、带gcd的模等)@Jarod42可以有复杂的模式,但不能与2个变量混合(B%2=A
不可能发生),它始终链接到constant@Berto99看一看这里有两个选择:我有(a==0&&B==6)
在这个条件下它可以工作,或者B
将在值5处停止,所以没有问题。它可以持续到B==6000
或更多,但我无法预测它。这是一个例子
if((A == 0 && B%2 == 0)
B == 6