在類似這樣的問題,如何在布爾滿足表達式中保存和比較值?
如果我使用遞歸,我不得不找X1,X2和X3滿足了所有的TRUE或FALSE值,解決在C的問題,我將如何比較對齊(無論變量是否不像第一個子句中的X2)與真實的真值和假值進行比較?我可以使用0和1遞歸地嘗試所有排列,但我不確定如何實際去計算這個。
在類似這樣的問題,如何在布爾滿足表達式中保存和比較值?
如果我使用遞歸,我不得不找X1,X2和X3滿足了所有的TRUE或FALSE值,解決在C的問題,我將如何比較對齊(無論變量是否不像第一個子句中的X2)與真實的真值和假值進行比較?我可以使用0和1遞歸地嘗試所有排列,但我不確定如何實際去計算這個。
我不完全確定你的問題,但你有4個布爾值可以用4位表示。通過利用積分內部respresentation,你可以在一個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 ...
}
bool x1[2]={false,true};
bool x2[2]={false,true};
bool x3[2]={false,true};
bool x4[2]={false,true};
for(int i1=0;i1!=2;i1++)
{
for(int i2=0;i2!=2;i2++)
{
for(int i3=0;i3!=2;i3++)
{
for(int i4=0;i4!=2;i4++)
{ if((x1[i1]||!x2[i2]||!x3[i3])&&(x1[i1]||x2[i2]||x4[i4]))
.......the expression holds, do something you need
}
}
}
}
這個答案的思想是與K-BALLO相同,但顯然,他有更聰明的代碼。
你可以嘗試解釋一下你如何利用「積分」的內部表示以及你的推理是什麼? – Louis93
阿穆爾利,nenvermind,我現在明白了。謝謝! – Louis93