1403 乙個新的取石子遊戲

2021-06-13 10:57:08 字數 828 閱讀 1104

description

a和b準備玩乙個全新的取石子遊戲。在遊戲的一開始,他們擺n(1<=n<=10)個盤子在一條線上,每個盤子裡面均放有一些石子,a和b輪流去石子。取石子的規則如下:每次,取石子的人必須選中乙個盤子,然後從盤子中拿走至少一顆石子,然後將盤子中剩下的石子以任意分配方式分配到其餘若干盤子中,也可以不向外分配。再也不能取石子的那個人為負。

a和b在這個遊戲中玩得都相當的不錯,現在給定石子序列,由你來編寫程式確定最終獲勝的是誰。

input

輸入包括多組測試資料,每組測試資料第一行乙個正整數n,如題中所說。第二行包括n個數字,第i個數字代表第i個盤子裡面石子的個數。每個數字都不會超過100。

n=0時輸入結束。

output

對於每組測試資料,輸出一行,若a能贏得比賽,輸出1,否則輸出0。

sample input

32 1 3

21 1

0sample output10

思路引導

(1)此題的難點在於尋找必勝態和必敗態!

(2)若必勝態不好找,那就不如直接尋找必敗態!

(3)除去必敗態,其餘的狀態對於先手來說就是必勝態了!

**:

#include

#include

using namespace std;

int a[1000];

int main()

{int i;

int n;

bool flag;

while(scanf("%d",&n)&&n)

{for(i=0;i

取石子的遊戲

time limit 1000ms memory limit 10000k total submissions 32209 accepted 10658 description 有兩堆石子,數量任意,可以不同。遊戲開始由兩個人輪流取石子。遊戲規定,每次有兩種不同的取法,一是可以在任意的一堆中取走任意...

Applese 的取石子遊戲

php版本一 題解 std 博弈這是一道經典的博弈問題。可以使用動態規劃來解決 dp i j 表示進行了 i 輪,從前面取走了 j 個時候的最大收益。這個老師上課的時候教過。實際上,由於題面中的兩個限制條件,可以得出先手有必勝策略 即選擇所有的奇數項或者偶數項。c 版本一 author stzg l...

給18小萌新的乙個有趣的小問題,取石子問題

現在地上橫著一排放了n堆石頭 n是偶數 每一堆石頭的個數不確定 但是總數和為奇數 然後兩個人輪流取石頭,規則是一次只能取一堆,而且只能取首位,最後誰拿到的石頭多誰取勝,請問如果你先手的話,你是否有乙個必勝的策略?答案當然是有的,那麼這個思路是怎麼樣的呢?很簡單。你給這堆石頭編號從1 n。比如有8堆,...