hdu1846巴什博弈(java)
生活随笔
收集整理的這篇文章主要介紹了
hdu1846巴什博弈(java)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目鏈接
有一堆石子一共有 n 個,兩人輪流進行,每走一步可以取走 1…m 個石子,最先取光石子的一方為勝。
對于博弈的理解,就是圍繞找必勝點和必敗點而解決問題,首先分析m
1:m>=n先走必贏
2:m+ 1=n先走必輸,因為只能拿1-m個,那么剩下的一定可以直接拿完
3:m +1>n時候,換位思考,如果我是第二拿,我只想剩m +1一定能贏,如果我是先拿,我想讓我成為可選擇的第二狀態,所以先取者就想取到剩(m +1)的倍數為止,因為剩下m+ 1倍數,無論第二個人怎么拿,第一個人總能拿完,總剩下m+1的倍數,所以是必勝態。但是這也不是絕對的,因為都選擇最優策略,所以一旦剛開始就是m +1的倍數,那么先拿的人就涼了。狀態就轉移了。
附上代碼,暑假寫的題目,順便復習一下
總結
以上是生活随笔為你收集整理的hdu1846巴什博弈(java)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蓝桥杯 大臣的旅费(Java dfs)
- 下一篇: hdu1007最近点对问题(分冶java