您當前的位置:首頁 > 舞蹈

你在生活中用過最高階的演算法知識是什麼?

作者:由 hzwer 發表于 舞蹈時間:2021-12-27

你在生活中用過最高階的演算法知識是什麼?hzwer2021-12-27 00:28:49

寫程式輔助自己玩歡樂鬥牛,先看四張牌然後幾秒內決定搶莊的那種,後來還把它出成了一道題。

列舉最後一張牌,計算我自己定義的期望得分,根據分數高低決定搶莊。

效果很不錯,從頭開始一小時贏了幾十萬歡樂豆。

後來在高倍場的某次對局中發現期望得分很高,果斷搶了莊,但是閒家3個“牛牛”,瞬間輸光。

以下是完整題目:

歡樂鬥牛

「題目背景」

為了更快的獲取歡樂豆,hzwer準備去玩歡樂鬥牛,但是由於人品太差,在一個小時之內輸光了20個QQ號的歡樂豆(每天系統會贈送每個號4000歡樂豆)。第二天他準備繼續再戰歡樂鬥牛的搶莊模式,但是由於缺乏思考能力,需要編寫一個程式來決定是否搶莊。

「題目描述」

在玩家決定是否搶莊之前,系統會下發四張牌稱為底牌,最後一張牌在決定後發放,每張牌可能為1-10,J,Q,K,hzwer認為最後一張牌為每一種點數的機率是相同的,對於一個由五張牌組成的牌型,分數計算規則如下,請你得出底牌的期望得分。

首先注意:在鬥牛中,J,Q,K的點數視為10點,即11,12,13在計算頭或點數時均視為10,所有牌無視其花色。

首先考慮特殊牌型

四炸——即5張牌中有4張一樣的牌(如33334),分數為40

五花牛——五張牌均是J,Q或K(如JQJQK),分數為50

五小牛——五張牌點數都小於5且點數和小於或等於10(如11223),分數為60

若有多種特殊牌型,得分取分數最大的特殊牌型(如11112視為五小牛)。

如果沒有特殊牌型,首先判斷牌型是否有“頭”,如果五張牌中任意三張的總和為10的倍數如(1K9)即為有“頭”,無“頭”的牌型得分為0。

對於有頭的牌型得分計算如下:

所有牌的和記為t,如果t%10=0則稱為“牛牛”,牛牛得分為30;t%10<7稱為“小牛”,得分為t%10,否則得分為(t%10)*2。

「輸入格式」

第一行一個整數T,表示T組資料

每組資料佔一行,為4個整數(11,12,13分別表示J,Q,K)

「輸出格式」

對於輸入的n行,輸出每4張牌的期望得分(四捨五入)

「樣例輸入」

2

2 2 2 2

10 4 5 12

「樣例輸出」

43

9

「樣例解釋」

對於2 2 2 2,最後一張為1或2時,構成五小牛,否則為炸彈,期望得分(2*60+11*40)/13=43。08

對於10 4 5 12,最後一張為1-13的得分分別是30+0+0+0+4+5+0+0+0+18+18+18+18=111/13=8。54

1為牛牛,5為4點,6為5點,10-13為9點,其餘無頭

「資料範圍」

30%的資料T<=5

70%的資料T<=100000

100%的資料T<=1000000

標簽: 10  牌型  得分  13  歡樂