bzoj2463谁能赢呢?
生活随笔
收集整理的這篇文章主要介紹了
bzoj2463谁能赢呢?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Description
小明和小紅經常玩一個博弈游戲。給定一個n×n的棋盤,一個石頭被放在棋盤的左上角。他們輪流移動石頭。每一回合,選手只能把石頭向上,下,左,右四個方向移動一格,并且要求移動到的格子之前不能被訪問過。誰不能移動石頭了就算輸。假如小明先移動石頭,而且兩個選手都以最優策略走步,問最后誰能贏?
Input
輸入文件有多組數據。
輸入第一行包含一個整數n,表示棋盤的規模。
當輸入n為0時,表示輸入結束。
Output
對于每組數據,如果小明最后能贏,則輸出”Alice”, 否則輸出”Bob”, 每一組答案獨占一行。
Sample Input
2
0
Sample Output
Alice
HINT
對于所有的數據,保證1<=n<=10000。
分析:這道題啊,說是博弈,但思路比較簡單:
對于每一個棋盤,顯然只要有一個格子沒走過,當前手就要想盡辦法的到達,不然就會輸了,那么根據n就可以分成兩種情況:
n為奇數:n*n也為奇數,這樣走完所有格子(最壞情況)一定需要偶數步,顯然后手勝利
n為偶數:n*n也為偶數,這樣走完所有格子(最壞情況)一定需要奇數步,顯然先手勝利
這樣判斷一下n的奇偶就可以了
這里寫代碼片 #include<cstdio>using namespace std;int n;int main() {scanf("%d",&n);while (n){if (n%2==0) printf("Alice\n");else printf("Bob\n");scanf("%d",&n);}return 0; }轉載于:https://www.cnblogs.com/wutongtong3117/p/7673575.html
總結
以上是生活随笔為你收集整理的bzoj2463谁能赢呢?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 组件与组件之间的通信以及vue2.0中的
- 下一篇: 面条为什么可以燃烧?