博弈論問(wèn)題

博弈論是很有意思的數(shù)學(xué)問(wèn)題爷耀,如果能夠懂其道理,短短幾行代碼就能將其本質(zhì)表示出來(lái)蜡娶。

目前我的感受就是:在一場(chǎng)博弈之中借浊,從結(jié)果向前推,會(huì)出現(xiàn)一個(gè)必?cái)B(tài)强饮,我們需要做的就是推測(cè)是先手還是后手能讓對(duì)方變成必?cái)B(tài)。

一、巴什博奕(Bash Game)
有一堆n個(gè)物品梧疲,A、B兩人輪流從中仍俗肌(1~m)個(gè)物品幌氮,最后取光者獲勝。
逆向思考胁澳,當(dāng)對(duì)手面對(duì)(m+1)這種情況時(shí)该互,無(wú)論如何不能獲勝【一定是m+1】,所以只要你能想辦法讓對(duì)手面對(duì)k(m+1)這種情況即可韭畸,即當(dāng)你面對(duì)(k(m+1)+r)時(shí)取走r宇智,易證r<m.

如果開(kāi)局n=k(m+1),那么先手必輸胰丁。
如果開(kāi)局n=k
(m+1)+r随橘,那么先手必贏。

 //A為先手
//N為總數(shù)锦庸,K為最多取的個(gè)數(shù)机蔗,輸出勝者
#include <cstdio>
int main()
{
    int n;
    int N,K;
    scanf("%d", &n);
    while(n--)
    {
        scanf("%d %d",&N,&K);
        if(N%(K+1)) printf("A\n");
        else printf("B\n");
    }
    return 0;
}

這是最簡(jiǎn)單的博弈問(wèn)題,我們可以思考一下如果將題目改為最后取的人失敗甘萧,同時(shí)我們將題目中的取東西的上下限改為更加普遍的(p~q)萝嘁。
在此,找了一道HDU-2897的題幔嗦。

//有n個(gè)物品酿愧,一次最少取p個(gè),最多q個(gè)
//問(wèn)先手是否必贏
#include <stdio.h>
int main()
{
    int n,p,q;
    while(scanf("%d %d %d",&n,&p,&q)==3)
    {
        if(n%(p+q)==0) printf("WIN\n");
        else if(n%(p+q)<=p) printf("LOST\n");
        else printf("WIN\n");
    }
}

當(dāng)n%(p+q)==0時(shí)邀泉,先手只需要拿q個(gè)即可必贏嬉挡。(當(dāng)后手取i個(gè)時(shí),只需要保證一輪【后-先】取走之和為p+q)
當(dāng)n%(p+q)=k<=p時(shí)汇恤,先手拿i個(gè)庞钢,后手只需要拿(p+q-i)個(gè),就能讓最后剩k個(gè)因谎,即先手必輸基括,即后手必贏。
當(dāng)n%(p+q)=k>=p【n=k*(p+q)+p+r】時(shí)财岔,先手去p個(gè)后风皿,與上種情況剛好相反河爹,先手必贏,即后手必輸桐款。

(將其轉(zhuǎn)換的套路掌握咸这,就可有任意變換)

二、威佐夫博弈(Wythoff Game)
有兩堆各若干的物品兩人輪流從中其中一堆取至少一件物品魔眨,至多不限媳维,或從兩堆中同時(shí)取相同件物品,規(guī)定最后取完者勝利遏暴。

結(jié)論:若兩堆物品的初始值為(x侄刽,y),且x<y,則另z=y-x朋凉;
記w=(int)[((sqrt(5)+1)/2)*z]; //變化方式
若w=x州丹,則先手必?cái)。駝t先手必勝侥啤〉卑龋·

(奇異局)
當(dāng)(0,0)時(shí)盖灸,先手必?cái)。?】
當(dāng)(1磺芭,2)時(shí)赁炎,先手必?cái)。?】
當(dāng)(3钾腺,5)時(shí)徙垫,先手必?cái)。?】
當(dāng)(4放棒,7)時(shí)姻报,先手必?cái)。?】
當(dāng)(6间螟,10)時(shí)吴旋,先手必?cái)。?】
當(dāng)(8厢破,13)時(shí)荣瑟,先手必?cái)。?】
當(dāng)(9摩泪,15)時(shí)笆焰,先手必?cái)。?】
當(dāng)(11见坑,18)時(shí)嚷掠,先手必?cái)∧蠹欤?】
......

#include <cstdio>
#include <cmath>

int main()
{
    long long n1,n2,n,temp;
    scanf("%lld",&n);
    while(n--)
    {
        scanf("%lld %lld",&n1,&n2);
        if(n1>n2)
        {
            temp=n1;
            n1=n2;
            n2=temp;
        }
        temp=(n2-n1)*(1+sqrt(5))/2;
        if(temp==n1) printf("B\n");
        else printf("A\n");
    }
    return 0;
}

提示:1.618=(sqrt(5)+1)/ 2。
勝者只需要將非奇異局變?yōu)槠娈惥旨纯伞?/p>

三不皆、尼姆博弈(Nimm Game)
有任意堆物品贯城,每堆物品的個(gè)數(shù)是任意的,雙方輪流從中取物品粟焊,每一次只能從一堆物品中取部分或全部物品冤狡,最少取一件,取到最后一件物品的人獲勝项棠。
結(jié)論:將每堆物品全部異或起來(lái)悲雳,如果得到的值為0,先手必?cái)∠阕罚駝t先手必勝合瓢。

個(gè)人認(rèn)為可以通過(guò)逆向判斷,直接判斷奇偶數(shù)(用異或)透典。

# include<stdio.h>

int main()
{
    int N,n,ans=0;
    scanf("%d",&n);
    while(n--)
    {
        scanf("%d",&N);
        ans=ans^N;
    }
    if(ans) printf("A");
    else printf("B");
    return 0;
}

四晴楔、斐波那契博弈
有一堆n個(gè)物品,兩個(gè)人輪流取物品峭咒,先手最少取一個(gè)税弃,至多無(wú)上限,但不能把物品取完凑队,之后每次取的物品數(shù)量不能超過(guò)上一次取的物品數(shù)的兩倍且至少為一件则果,取走最后一件物品的人獲勝。

結(jié)論:先手勝當(dāng)且僅當(dāng)n不是斐波那契數(shù)(需要存儲(chǔ)斐波那契數(shù))漩氨。

//HDU2516 此時(shí)涵蓋了所有int數(shù)(西壮??)
#include <stdio.h>

int ans[55];

int main()
{
    int n;
    ans[0]=1;
    ans[1]=1;
    for(int i=2;i<55;i++)
    {
        ans[i]=ans[i-1]+ans[i-2];
    }
    while(scanf("%d",&n)==1 && n)
    {
        int flag=0;
        for(int i=0;i<55;i++)
        {
            if(ans[i]==n)
            {
                flag=1;
                break;
            }
        }
        if(flag) printf("Second win\n");
        else printf("First win\n");
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末叫惊,一起剝皮案震驚了整個(gè)濱河市款青,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌霍狰,老刑警劉巖抡草,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蚓耽,居然都是意外死亡渠牲,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門步悠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)签杈,“玉大人,你說(shuō)我怎么就攤上這事〈鹄眩” “怎么了铣除?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)鹦付。 經(jīng)常有香客問(wèn)我尚粘,道長(zhǎng),這世上最難降的妖魔是什么敲长? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任郎嫁,我火速辦了婚禮,結(jié)果婚禮上祈噪,老公的妹妹穿的比我還像新娘泽铛。我一直安慰自己,他們只是感情好辑鲤,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布盔腔。 她就那樣靜靜地躺著,像睡著了一般月褥。 火紅的嫁衣襯著肌膚如雪弛随。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天宁赤,我揣著相機(jī)與錄音舀透,去河邊找鬼。 笑死决左,一個(gè)胖子當(dāng)著我的面吹牛盐杂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播哆窿,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼厉斟!你這毒婦竟也來(lái)了挚躯?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤擦秽,失蹤者是張志新(化名)和其女友劉穎码荔,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體感挥,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缩搅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了触幼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片硼瓣。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出堂鲤,到底是詐尸還是另有隱情亿傅,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布瘟栖,位于F島的核電站葵擎,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏半哟。R本人自食惡果不足惜酬滤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望寓涨。 院中可真熱鬧盯串,春花似錦、人聲如沸缅茉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蔬墩。三九已至译打,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拇颅,已是汗流浹背奏司。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留樟插,地道東北人韵洋。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像黄锤,于是被迫代替她去往敵國(guó)和親搪缨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • “石頭鸵熟、剪子副编、布”(或者“老虎、雞流强、杠子”)是一個(gè)很多人都玩過(guò)的游戲痹届,如果我們兩個(gè)人一起來(lái)玩這個(gè)游戲,賭注是人民幣...
    Secant閱讀 15,045評(píng)論 6 18
  • 一年級(jí)語(yǔ)文上冊(cè)生字表 生字表一(共400字) 啊(ā)愛(ài)(ài)安(ān)岸(àn)爸(bà)八(bā)巴(bā)...
    meychang閱讀 2,796評(píng)論 0 6
  • sì 支zhī茶chá 對(duì)duì 酒jiǔ打月,賦fù 對(duì)duì 詩(shī)shī队腐,燕yàn子zi 對(duì)duì 鶯yīng 兒é...
    每個(gè)人的孟母堂閱讀 1,209評(píng)論 0 6
  • 身居小鎮(zhèn)多年,對(duì)于春節(jié)奏篙,再也沒(méi)有小時(shí)候那樣渴望柴淘、期盼了。由于歲月的增長(zhǎng),各種應(yīng)酬的頻繁悠就,對(duì)春...
    楚雄張炳亮閱讀 399評(píng)論 1 9
  • 人之所以會(huì)心累千绪,不在于你堅(jiān)持了多久,而在于你的舉棋不定梗脾,看似堅(jiān)持荸型,實(shí)則猶豫,最為累心炸茧。 生活路不長(zhǎng)瑞妇,而...
    加菲妞兒閱讀 210評(píng)論 0 0