甲,乙兩個人玩nim取石子遊戲。
nim遊戲的規則是這樣的:地上有n堆石子(每堆石子數量小於10000),每人每次可從任意一堆石子裡取出任意多枚石子扔掉,可以取完,不能不取。每次只能從一堆裡取。最後沒石子可取的人就輸了。假如甲是先手,且告訴你這n堆石子的數量,他想知道是否存在先手必勝的策略。
數學題!用到了
哈佛大學數學系副教授查理士•理昂納德•包頓(chales leonard bouton)的結論:所有堆中的石子數取異或,若值非0,則先手贏;若為0,則先手輸。直接模擬即可。這叫
nim加法,最終的結果叫nim和。
有興趣的可以看看果殼的一篇文章
#include#includeusing namespace std;
int t;
int n;
int main()
if(a)cout<<"yes"<
452,跳躍遊戲
給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最後乙個位置。示例 1 輸入 2,3,1,1,4 輸出 true 解釋 我們可以先跳 1 步,從位置 0 到達位置 1,然後再從位置 1 跳 3 步到達最後乙個位置。示例 2 輸入 ...
4 5 2寶島探險 BFSearch
includeusing namespace std struct note int main 定義乙個標記陣列並全部初始化為0 int a 51 51 用來儲存地圖 int i,j,k,sum,max 0,mx,my,n,m,startx,starty,tx,ty 定義乙個方向陣列 int nex...
LeetCode 452 射擊氣球
在二維空間中有許多球形的氣球。對於每個氣球,提供的輸入是水平方向上,氣球直徑的開始和結束座標。由於它是水平的,所以y座標並不重要,因此只要知道開始和結束的x座標就足夠了。開始座標總是小於結束座標。平面內最多存在104個氣球。一支弓箭可以沿著x軸從不同點完全垂直地射出。在座標x處射出一支箭,若有乙個氣...