1.斐波那契博弈是另種型別的博弈,這種博弈要求的條件是(1):博弈者還是兩個人,n個物品(2)先手在第一次不能取完所有的物品,但是至少取走乙個物品。(3)以後的每乙個回合,每次取走的物品至多是上乙個人的兩倍,至少是乙個。(4)先取完的人勝利。
2.同理,我們在這裡還是要研究先手的必勝和必敗態。在斐波那契博弈中,先手的必敗態是:當物品的數量n是乙個斐波那契數的時候,先手必敗。至於證明,有點複雜,就不再證明。但是我想說明的是乙個定理:zeckendorf定理(齊肯多夫定理):任何正整數可以表示為若干個不連續的fibonacci數之和。這是乙個很重要的定理,分解的過程使用貪心思想,盡量選大的。下面給出乙個hdu上的例子:斐波那契博弈。
下面是**:
#include"stdafx.h"
#include#pragma warning(disable:4996)
#define ll long long
const int maxn = 1e4;
ll tem[maxn];
void init()
}using namespace std;
int main()
} if (flag)
else
}return 0;
}
斐波那契博弈論
如果這個數是斐波拉契數,那麼先手就敗的情況。include include int fib 233 x std map int,bool mp intmain 證明 比如 有21個石子 21 13 8 連續兩個斐波拉契數13 8的和 首先有21個石子,我們肯定是不能讓對手取最後乙個石子的。顯而易見,...
斐波那契博弈
斐波那契博弈 有一堆物品,兩人輪流取物品,先手最少取乙個,至多無上限,但不能把物品取完,之後每次取的物品數不能超過上一次取的物品數的二倍且至少為一件,取走最後一件物品的人獲勝。結論是 先手勝當且僅當n不是斐波那契數 n為物品總數 如hdu2516 include include include us...
斐波那契博弈?!
有一堆石子有n顆,雙方輪流取石子。先手第一次可以拿至少乙個但是不能拿完 接下來每次取的石子至少為1個,至多為上一次拿的兩倍 問先手是否有必勝策略 觀 da 察 biao 發現先手必敗當且僅當n為斐波那契數?考慮歸納證明 設n是斐波那契數,n a b,a和b為n的前兩個斐波那契數 設先手拿的石子數量為...