用什么樣一種方法來保存和判斷b和c的邏輯關系?
比如輸入條件是:
b>a,c>a,
假如這樣保存
if(b>a)
b=2,a=1;
if(c>a)
c=a+1;
即c=2;
if(b==c) //即b==2,c==2
輸出b與c大小不確定.
else
b與c大小確定
輸出
但這里有個問題
如果 c>b>a, e>d>a
設a=1那么
b=2,c=3
d=2,e=3
如果按照相等來判斷的話
判斷方法:
if(c==e)
print("c與e關系不確定")
else
print("c與e關系能確定")
但 這樣的話b和e的關系也能確定,因為b!=e,
可實際上b和e的關系不能確定
如果用集合來保存這樣的關系的話,那怎么樣表示這個集合上限?
輸入:b>a,c>a
設定a=100,
b=[101,無窮大]
c=[101,無窮大]
輸入增加 d>b 即變為:d>b>a,c>a
給d賦值:
d=[b[0]+1,無窮大]即d=[102,無窮大]
這樣判斷d是否大于a只需判斷d[0]是否大于a[0]即可,就是集合的利用包含關系來判斷
如果此時輸入
e>c 即變為:d>b>a,e>c>a
給e賦值:
e就應該是[c[0]+1,無窮大]即:[101+1,無窮大] [102,無窮大]
e與d的集合一樣,說明e與d不確定
問題來了:
如果增加了一個f>e 即:d>b>a,f>e>c>a
為f賦值就應該是: f=[e[0]+1,無窮大] 即[103,無窮大]
f=[103,無窮大] 而d=[102,無窮大] f[0]>d[0],f比d大! 實際上f與d的關系不確定!這就矛盾了
如果這樣改進:
條件 :b>a,c>a
設 a=100,
int x=某個具體的數
b=[101,x]
c=[101,x]
這樣保存
如果此時輸入:
d>b 即d>b>a,c>a
如果設定 d=[x+1,x*2] 即d的每個數都比b大,
實際上這樣也是有問題 的,
某個具體的數x 怎么確定? 隨便設定一個?比如10000,但這樣還是有bug
這里寫不下了..這個bug很容易想到這里就暫時不寫了.
那么到底怎么保存這樣的一種邏輯關系呢?
uj5u.com熱心網友回復:
沒明白你的目的,b和c的關系應該是不確定的,所以應該用or關系來描述即c>=b || c<=b
uj5u.com熱心網友回復:
據你的描述,要保存邏輯關系,我的建議是不死可以用樹?uj5u.com熱心網友回復:
樓主,你的邏輯有問題:if(c==e)
print("c與e關系不確定")
else
print("c與e關系能確定")
c==e的時候竟然是關系不能確定?這個邏輯恕我無法看懂。能詳細說說么?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/35935.html
標籤:模式及實現
上一篇:匪夷所思的c++
