• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 51, 文章 - 1, 評(píng)論 - 41, 引用 - 0
            數(shù)據(jù)加載中……

            計(jì)算24點(diǎn)

                  計(jì)算24點(diǎn)有不同版本,這里規(guī)定:運(yùn)用加減乘除計(jì)算四個(gè)整數(shù)使它的結(jié)果為24。當(dāng)然這個(gè)算法經(jīng)過(guò)適當(dāng)?shù)男薷倪m合所有的二元運(yùn)算符,也能計(jì)算超過(guò)四個(gè)整數(shù)。
                  
            計(jì)算24點(diǎn)的算法較簡(jiǎn)單,就是窮舉法。由于一般計(jì)算表達(dá)式含有括號(hào),這使得窮舉無(wú)從下手。所以本文使用另一種表達(dá)式——后綴表達(dá)式。 
                  后綴表達(dá)式就是數(shù)字放前運(yùn)算符放后的表達(dá)式。如:a+b表示為a b+,(a+b)*c-d表示為a b + c * d -。用這樣表達(dá)式可以去掉括號(hào),這對(duì)本文的算法很關(guān)鍵。
                  任何一個(gè)計(jì)算24點(diǎn)的算式都可以化成7位的后綴表達(dá)式
            假設(shè)給定的四個(gè)整數(shù):a b c d。給定的運(yùn)算符號(hào)集{+,-,*,/}。首先從符號(hào)集中取出三個(gè)運(yùn)算符,然后加上a b c d。這七個(gè)單位的每一個(gè)排列都可以當(dāng)成一個(gè)后綴表達(dá)式:或者是不合法的,或者是合法的。窮舉并計(jì)算這樣的排列,就可找出答案。
                  上面的方法是先取定7個(gè)單位,然后判斷這7個(gè)單位組成的表達(dá)式是否合法。換一種思路,先取定一個(gè)合法的表達(dá)式,即確定數(shù)字和符號(hào)的位置,然后確定7個(gè)單位,對(duì)應(yīng)數(shù)字和符號(hào)的位置。
                  這兩種枚舉方法都可行,第二種會(huì)快一些,它把判斷后綴表達(dá)式合法性放在最外層循環(huán),從而省去了不少的判斷。
                  注:這個(gè)里用的枚舉集合的方法參見(jiàn)另一篇文章《從集合中枚舉子集》
                  具體實(shí)現(xiàn)見(jiàn)代碼
                  編譯方式:
                  g++ Calc24.cpp SetIter.cpp   得到第一種方法。
                  g++ Calc24.cpp SetIter.cpp -DCALC24_ADV   得到第二種方法。

            posted on 2007-09-21 22:02 lemene 閱讀(762) 評(píng)論(2)  編輯 收藏 引用

            評(píng)論

            # re: 計(jì)算24點(diǎn)  回復(fù)  更多評(píng)論   

            您好!我覺(jué)得您的這個(gè)關(guān)于24點(diǎn)計(jì)算的想法很好!我想問(wèn)個(gè)問(wèn)題,就是說(shuō)我要第二種方法,事先算出有五種后綴表達(dá)式的格式是正確的,之后我應(yīng)該怎樣列舉出這些表達(dá)式呢?我覺(jué)得不停的迭代循環(huán)套的層太多了。請(qǐng)問(wèn)您有什么好方法嗎
            2012-05-30 03:55 | jjx

            # re: 計(jì)算24點(diǎn)[未登錄](méi)  回復(fù)  更多評(píng)論   

            @jjx
            這里只嵌套三層循環(huán):
            第一層確定表達(dá)式的樣式,次數(shù)為C(3,7).
            第二層確定操作符,次數(shù)為P(3,5).
            第三層確定數(shù)字,如果數(shù)字沒(méi)有相同的,則次數(shù)為P(4,4).
            2012-06-10 22:22 | lemene

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            久久精品国产99久久久古代| 久久久久无码精品国产app| 国产精品美女久久福利网站| 久久久久久久综合狠狠综合| 精品国产乱码久久久久久1区2区 | 一本大道久久香蕉成人网 | 亚洲va久久久噜噜噜久久| 久久综合给合久久国产免费| 国产综合成人久久大片91| 国内精品久久久久影院薰衣草| 亚洲精品高清久久| 亚洲国产精品久久久天堂| 精品久久久久久国产三级| 久久99国产综合精品免费| 久久午夜福利电影| 99久久精品国产高清一区二区 | 久久香综合精品久久伊人| 欧美日韩中文字幕久久久不卡| 久久精品人人做人人爽电影蜜月 | 日韩精品久久无码人妻中文字幕| 国内精品伊人久久久久影院对白| 午夜精品久久久久久中宇| 国产精品久久久久久久人人看| 精品免费久久久久国产一区| 2021久久国自产拍精品| 久久综合国产乱子伦精品免费| 亚洲七七久久精品中文国产| 久久精品国产WWW456C0M| 久久99精品久久久久久齐齐| 成人久久综合网| 久久精品无码一区二区三区| 国产精品久久久久久福利69堂| 亚洲精品白浆高清久久久久久| 日韩人妻无码一区二区三区久久99| 久久强奷乱码老熟女| 久久九九免费高清视频| 国内精品久久久久影院网站| 久久久久国产精品嫩草影院| 国产成人精品久久| 久久人人超碰精品CAOPOREN| 亚洲美日韩Av中文字幕无码久久久妻妇|