1. 程式人生 > >lintcode&九章演算法——Microsoft 面試題 | 我能贏 ? 待解決

lintcode&九章演算法——Microsoft 面試題 | 我能贏 ? 待解決

題目描述

有兩個人玩一個遊戲,給定一個最大可取整數 maxChoosableInteger,兩個人輪流從1~maxChoosableInteger 中取一個數,取過的數不可再取,若其中一方取過以後,

所有取過的數加起來的和大於等於desiredTotal,那麼這個人獲勝。

現在給你maxChoosableInteger和desiredTotal,問先手是否必勝,假定遊戲雙方均採取最優策略。

你可以假定給出的 maxChoosableInteger不超過20,desiredTotal不超過300。

樣例

輸入:
maxChoosableInteger = 10
desiredTotal = 11

輸出:
false

樣例說明

無論先手怎麼取數,先手都會輸掉遊戲。

先手可以取1到10中的任何一個。如果先手取1,那麼後手可以取2到10中的任何一個。

後手如果取10,那麼就可以贏得遊戲,因為此時和為1+10=11=desiredTotal。

假如先手取其他的數,那麼後手仍然能贏得遊戲,只要使和大於等於11即可。

思路