一排石頭的遊戲(取石頭)C語言實現

2021-07-02 13:13:11 字數 699 閱讀 9181

問題描述:

n塊石頭排成一行,每塊石頭有各自固定的位置。

兩個玩家依次取石頭,每個玩家可以取其中任意一塊石頭,或者相鄰的兩塊石頭,石頭在遊戲過程中不移位。

最後能將石頭一次取光的玩家獲勝。

c語言實現:

此處簡化,將石頭數設定為5,用乙個長度為5的陣列表示石頭,當元素值為1的時候,代表有石頭。為0時,代表沒有石頭。

#include//判斷當前條件下是否勝利

int ifwin(int array)

//取石頭操作

void getstone(int array)

else if(num_get==2)else

}else

}//列印當前遊戲狀況

void gamesituation(int array)

int main()

; int flag=-1;

while(1)

printf("you win!\n");

return 0;

}

這個遊戲先取者有必勝方法:

先取者只需要取中間的石頭即可。

當石頭為奇數時,取最中間的那顆石頭。

當石頭為偶數時,取最中間的兩顆石頭。

一排石頭的遊戲

程式設計之美 1.11節介紹了乙個取石頭的遊戲,遊戲規則如下 n個石頭排成一行,兩個玩家依次取石頭,每次可以取一塊或者相鄰的兩塊,取到最後一塊石頭的獲勝。如果a方先手,如何保證自己獲勝?書中給出了乙個a必勝的方案,如果總共有奇數個石頭,a取走中間的一塊,如果總共有偶數塊石頭,a取走中間的兩塊,這樣石...

一排石頭的遊戲(續)

我們繼續分析9棵石頭的情況,在正式開始研究之前,讓我們先研究幾種簡單的情況。前面的分析中我們已經研究了幾種先手必輸的方案,包括1,4,2 2 其中 表示不連續的兩堆或多堆 3 3。我們另外引入幾個新的先手必輸的方案,分別是 1 2 3 假設a先取,a所有可能的取法包括 1 取走1,變成2 3,相當於...

「拈」遊戲系列一 一排石頭的遊戲

這個題目來自於程式設計之美上的nim 1 一排石頭的遊戲,該類問題能考察面試者的思維,往往是兩個人玩的乙個遊戲,具體形式公司可以具體設定,這裡題目的意思是取石頭的數目有規定,也可以使報數每次只能增加幾個數字等。該類題目往往是要把最後乙個取完石頭定位為贏或者輸。該類題目第乙個取石頭的人占有主動權也有被...