日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

2013\National _C_C++_A\2.骰子迷题

發布時間:2024/5/7 c/c++ 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2013\National _C_C++_A\2.骰子迷题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

小明參加了少年宮的一項趣味活動:每個小朋友發給一個空白的骰子(它的6個面是空白的,沒有數字),要小朋友自己設計每個面寫哪個數字。但有如下要求:

  • 每個面只能填寫 0 至 8 中的某一個數字。

  • 不同面可以填寫同樣的數字,但6個面總和必須等于24。

  • 填好后,小朋友可以用自己填寫好數字的骰子向少年宮的兩個機器人挑戰----玩擲骰子游戲。規則如下:

    三方同時擲出自己的骰子,如果出現任何相同的數字,則三方都不計分。

    如果三方數字都不同,則最小數字一方扣 1 分,最大數字一方加 1 分。

    小明看到了兩個機器人手中的骰子分別是:

    0 0 0 8 8 8

    1 1 4 5 6 7

    請你替小明算一下,他如何填寫,才能使自己得分的概率最大。

    請提交小明應該填寫的6個數字,按升序排列,數字間用一個空格分開。

    如果認為有多個答案,提交字母序最小的那個方案。

    請嚴格按照格式,通過瀏覽器提交答案。

    注意:只提交一行內容,含有6個被空格分開的數字。不要寫其它附加內容,比如:說明性的文字。


    DFS

    Code

    def calculateProbability():"""計算獲勝概率"""global ans, maxInfx1, x2, m = 0, 0, 0for i in range(6):x1, x2 = 0, 0for j in range(6):if ans[i] > a[j]:x1 += 1else:breakfor j in range(6):if ans[i] > b[j]:x2 += 1else:breakm += x1 + x2if m > maxInf:maxInf = mprint(ans)def dfs(n: int, c: int, s: int):"""n: 骰子的六個面c: 當前面的點數s: 當前點數之和"""if s > 24:returnif n == 6:if s == 24:calculateProbability()returnfor i in range(c, 9):# 剪枝,如果剩下的所有面全部用 8 點能夠滿足點數之和的需求if (5 - n) * 8 >= 24 - s - i:ans[n] = idfs(n + 1, i, s + i)ans[n] = 0if __name__ == '__main__':a, b = [0, 0, 0, 8, 8, 8], [1, 1, 4, 5, 6, 7]ans, maxInf = [0] * 6, 0dfs(0, 0, 0)

    Answer:2 2 2 2 8 8

    總結

    以上是生活随笔為你收集整理的2013\National _C_C++_A\2.骰子迷题的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。