四種博弈總結
一. 巴什博奕(Bash Game):
1、 本遊戲是一個二人遊戲;
2、 有一堆石子一共有n個;
3、 兩人輪流進行;
4、 每走一步可以取走1…m個石子;
5、 最先取光石子的一方為勝;
POINT:
如果n能被(m+1)整除,後手贏,其他情況先手贏。
可以寫寫sg函式,就知道了。
if(n%(m+1)==0)
printf("second\n");
else
printf("first\n");
二. 威佐夫博弈(Wythoff Game):
有兩堆各若干的物品,兩人輪流從其中一堆取至少一件物品,至多不限,或從兩堆中同時取相同件物品,規定最後取完者勝利。
POINT:兩堆物品數量是a<b。if(a==(sqrt(5)+1)/2*(b-a)) 後手贏 else 先手贏。ps.向下取整用floor
解釋:http://blog.csdn.net/y990041769/article/details/21694007
if(floor((sqrt(5.0)+1)/2*(b-a))==a)
{
printf("second\n");
}
else printf("first\n");
三. 尼姆博弈(Nimm Game):
有任意堆物品,每堆物品的個數是任意的,雙方輪流從中取物品,每一次只能從一堆物品中取部分或全部物品,最少取一件,取到最後一件物品的人獲勝。
POINT:
兩種形態,1.取到最後一件物品的人獲勝。2.取到最後一件物品的人失敗(HDU 2509)。
1.把每堆的數量異或,為0則後手贏,否則先手贏。
2.分單堆和多堆討論。若多堆只有一個,則先手贏。若沒有多堆,則看單堆數量奇偶。若有多個多堆,異或為0則後手贏,反之先手贏。
解釋:http://acm.hdu.edu.cn/forum/read.php?fid=9&tid=10617
1.
int res=0;
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
res=res^a[i];
}
if(!res) printf("second\n");
else
{
printf("first\n")
}
2.
http://blog.csdn.net/mr_treeeee/article/details/75136470
四. 斐波那契博弈:
有一堆物品,兩人輪流取物品,先手最少取一個,至多無上限,但不能把物品取完,之後每次取的物品數不能超過上一次取的物品數的二倍且至少為一件,取走最後一件物品的人獲勝。
n為斐波那契數則後手贏,反之先手贏。
解釋:http://blog.csdn.net/acm_cxlove/article/details/7835016
相關文章
- 博弈總結
- 博弈論總結
- 四種常見NLP框架使用總結框架
- golang 中的四種型別轉換總結Golang型別
- 對四種限流演算法的思考和總結演算法
- SpringMVC-方法四種型別返回值總結SpringMVC型別
- NIO(四)channel總結
- Spring Boot下Profile的四種切換方式思路總結Spring Boot
- SpringMVC-方法四種型別返回值總結,你用過幾種?SpringMVC型別
- 基於Sql server資料庫的四種分頁方式總結SQLServer資料庫
- Android 按鈕單擊事件的四種常用寫法總結Android事件
- iOS面試題總結(四)iOS面試題
- RxJava 沉思錄(四):總結RxJava
- C++開發必看四種強制型別轉換的總結C++型別
- JUC鎖種類總結
- java四大引用總結Java
- 四則運算之總結
- 四則運算app總結APP
- 第四周總結
- SQL總結(四)編輯類SQL
- 【多執行緒總結(四)-三大性質總結】執行緒
- css各種佈局總結CSS
- vue 6種通訊總結Vue
- js各種驗證總結JS
- oracle 各種遷移總結Oracle
- SQL*Loader的使用總結(四)SQL
- Java 四大域物件總結Java物件
- flashback總結四之Flashback_Query
- 暑假第四周總結
- 第四周學習總結
- 暑期第四周總結
- css和html的四種結合方式CSSHTML
- 寶付幫你總結避免銀行卡被盜刷的四種辦法
- 《大話資料結構》讀後總結(四)資料結構
- 前端各種迴圈用法總結前端
- React | ref三種使用方式總結React
- iOS小數四捨五入總結iOS
- 四元數的運用與總結