回覆列表
  • 1 # 貓頭講故事

    這裡涉及一個減法的等價問題。也就是說A-B和B-A是否算同一個 根據題目的分類標籤,題主應該是不需要考慮負數問題的。 所以兩個數時共有5個算式;三個數時正如題主所列,一共有47個算式; 4個數時一共733個算式(這也是一個標準24點問題需要考慮的表示式數量); 5-8個數時非等價表示式數量分別為:15907, 443825, 15129599, 609432421 暫時沒有發現通項公式或遞推公式。 具體思路可以參考我的另一個回答:關於24點去重的演算法? - 小於0 的回答

    ========================== 更新一下考慮負數的情況

    首先先說一下我對錶達式等價的判斷規則: 如果兩個算式在任何一組運算元下結果均相等,那它們是等價的。 這裡並不僅限於交換律和結合律,還要考慮類似下面這些情況。 (A-B)/(C-D) 等價於 (B-A)/(D-C) (A-B)*(C-D)*(E-F) , (A-B)*(D-C)*(F-E) , (B-A)*(C-D)*(F-E) , (B-A)*(D-C)*(E-F) 又相互等價

    這麼看來問題就很複雜了,不過好在這裡有一些規律: 1. 如果所有運算元都為正數,那麼允許中途出現負數和不允許出現負數的情況下所能獲得的正數結果是完全一樣的。換句話說如果為了解24點,且運算元都非負,那麼中途所有減法都取結果為非負的順序即可。 2. 如果所有運算元都為正數,那麼對所有可以得到的負數結果,它的相反數也一定可以得到。但並不是所有正數結果都能算出對應的相反數。當且僅當一個結果為正數的表示式中使用過減法時我們可以保證它的相反數可以被算出。比如:如果我們能算出-10那就一定有辦法算出10。如果我們透過一個用過減法的算式算出10,那麼就一定有辦法算出-10。

    那麼回到計數上: 上面的第二條在不限制運算元的正負性的情況下同樣適用,表現為所有有減法參與的表示式所能得到的結果,其相反數都能得到。所以如果只為了計數的話,考慮正負情況下的非等價表示式數量其實就是:不考慮正負情況下的表示式數量的兩倍減去沒有減法參與的表示式的數量。

    由於實際使用中我們多可以把考慮減法負數結果的問題轉化為不用考慮它的問題,所以列出這些表示式的意義也就不太大了。結果的話是這樣的:

    兩個數時6個算式;三個數時68個(題目補充描述裡(C-B)*A這類都沒有列)

    4-8個數時的結果分別為1170, 27142, 793002, 27914126, 1150212810。

  • 中秋節和大豐收的關聯?
  • 過華清宮絕句拼音版?