<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 十、Python編程計算24點(之一) ----From a high school student's view to learnPython 關鍵字: python 高中生學編程 Python編程入門 計算24點表達式計算 組合問題 一、問題介紹 對于1-9中任意取出的四個數,找出這四個數組成的所有四則運算表達式,然后從這些表達式中挑出計算結果為24的表達式;對于表達式,不能夠重復,如: (1+2+3)*4與(2+1+3)*4只是加法的順序有些變化,所以只能夠算一種。 組合問題、表達式計算的問題在前面的兩篇中都進行了詳細的介紹,所以,本篇的問題關鍵就是如何枚舉出4個數的表達式組合。 在解決問題之前,提供一個鏈接,[點此進入](http://www.zhongguosou.com/game_lookup_tools/game_24_point.html)。在網頁上輸入任意的四個數,就可以列出所有組合,但結果有很多我們在上面所說的重復的情況: [![十三、Python編程計算24點(之一)](https://box.kancloud.cn/2015-10-30_5632e1cc04fc3.gif "十三、Python編程計算24點(之一)")](http://photo.blog.sina.com.cn/showpic.html#blogid=d6cca93e0101eukc&url=http://album.sina.com.cn/pic/d6cca93egx6DdBi4IhU26&690) ![](https://box.kancloud.cn/1728f24bb0b33da154e8469145305ca1_415x233.jpg) 如果你輸入1 2 34,給出的答案估計有242個,但絕大多數都是順序變化,再通過加入完全沒有必要的(),重復的結果。 所以我們的目的是給出簡潔的結果。 二、問題分析 我們將問題分成幾種情況來進行討論,由簡到繁: 1、沒有括號的表達式 這是最簡單的情況,分為兩類 加減組合以及全×: -a+-b+-c+-d and a×b×c×d --- 16 這這情況和數的排列順序沒有關系,全減和全除被排除,因為不可能生成24點 2、兩個數分組的表達式 這種情況我們處理類似以下的幾種類別: (a×b)/(c×/d) (a*/b)+-(c*/d) (a+-b)*/(c+-d) 對于這類分組,我們首先必須清楚一個問題:四個數中兩兩組合的種類。 四個數中取兩個數的組合這很好算,4(2)=4*3/(1*2)=6: ab ac ad bc bd cd 那么兩兩組合有幾種呢,答案是3 (ab) (cd) (ac) (bd) (ad) (bc) 在明確了這個分類之后,對于上面我們列舉的幾種情況分別處理時就比較簡單了,需要注意的是: 1).分組內【形如(ab)】、組間【形如(ab)與(cd)】的+*是沒有順序但-/是有順序的,對于有順序要求的需要處理(ab)(ba)兩種情況,注意不要出現重復的情況。 由于我們將數字進行了組合分類,我們只需處理每一類的情況,其余的分類就可以設計循環來處理,每一次的循環我們只是將abcd賦予了不同的數字,這個需要理解清楚。 2). 分組內(ab) (cd)兩個部分中間的符號若是+*,則只有一種情況,但若是-/,則有(ab) (cd) 和(cd) (ab)兩種情況,所以要分類討論。 3、取3個數分組的表達式 這種情況我們處理類似以下的幾種類別: (a+-b+-c)*/d ? ?① a*b*c/d ? ?? ? ② (a+-b*/c)*/d ? ?③ d/(a+-b*/c)? ?? ④ a*/b*/c+-d 四個數中取三個數的組合是C4(3)=4,但是涉及③④的需要考慮順序。 同樣,我們對于四種組合,只需要處理一種情況,其余的情況由循環來進行處理,每一次的循環abcd的值不同。 尤其針對③④的情況,對于每一組abcd,例如:在處理(a+b/c)/d的情況時,我們只需處理(a+b/c)/d和(a+c/d)/d以及d/(a+b/c)和d/(a+c/d),其他的情況都將用循環來自動處理 4、情況四a*/b+-c+-d ?(a+-b)c*/d? 這種情況其實和第二種情況差不多,但是我們為什么又要把它分到另外的一種情況內呢?這又回歸上面所說的四個數中兩兩選擇的問題,原先我們認為只有三種,是因為不用考慮重復的情況,但是這種情況下,(ab)(cd) 與 (cd)(ab)是兩種不同的情況,我們來舉個例子,a*/b+-c+-d與c*/d+-a+-b明顯是兩種不同結果的組合,所以組合就從三種變為了兩種 5、情況五a*b*c/d? 這種情況因為十分簡單所以就不用利用組合來實現,直接枚舉法就可以。 我的更多文章: - [Python程序調試的一些體會](http://blog.sina.com.cn/s/blog_d6cca93e0101ewc9.html)(2013-10-06 22:57:35) - [十四、Python編程計算24點(之二)](http://blog.sina.com.cn/s/blog_d6cca93e0101euxx.html)(2013-10-03 22:18:28) - [十二、Python簡單數據結構應用(之二)](http://blog.sina.com.cn/s/blog_d6cca93e0101euk8.html)(2013-10-02 22:10:41) - [十一、Python簡單數據結構應用(之一)](http://blog.sina.com.cn/s/blog_d6cca93e0101ep9z.html)(2013-09-23 23:31:49) - [十、Python編程解決組合問題(之二)](http://blog.sina.com.cn/s/blog_d6cca93e0101entc.html)![](https://box.kancloud.cn/2015-10-30_5632e1cc04fc3.gif "此博文包含圖片") (2013-09-21 23:37:27) - [九、Python編程解決組合問題(之一)](http://blog.sina.com.cn/s/blog_d6cca93e0101ent7.html)(2013-09-21 23:32:54) - [八、Python的函數編程(之二)](http://blog.sina.com.cn/s/blog_d6cca93e0101ekwj.html)![](https://box.kancloud.cn/2015-10-30_5632e1cc04fc3.gif "此博文包含視頻") (2013-09-20 23:09:39) - [七、Python的函數編程(之一)](http://blog.sina.com.cn/s/blog_d6cca93e0101ekwg.html)![](https://box.kancloud.cn/2015-10-30_5632e1cc04fc3.gif "此博文包含視頻") (2013-09-20 23:09:10) - [六、Python的程序流程](http://blog.sina.com.cn/s/blog_d6cca93e0101ejeg.html)(2013-09-19 16:53:58) - [高中生如何學編程](http://blog.sina.com.cn/s/blog_d6cca93e0101e8fn.html)(2013-09-02 19:26:01)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看