你在進行乙個簡化版的吃豆人遊戲。你從(0, 0)
點開始出發,你的目的地是(target[0], target[1])
。地圖上有一些阻礙者,第 i 個阻礙者從(ghosts[i][0], ghosts[i][1])
出發。
每一回合,你和阻礙者們*可以*同時向東,西,南,北四個方向移動,每次可以移動到距離原位置1個單位的新位置。
如果你可以在任何阻礙者抓住你之前到達目的地(阻礙者可以採取任意行動方式),則被視為逃脫成功。如果你和阻礙者同時到達了乙個位置(包括目的地)都不算是逃脫成功。
當且僅當你有可能成功逃脫時,輸出 true。
示例 1:
輸入:
ghosts = [[1, 0], [0, 3]]
target = [0, 1]
輸出:true
解釋:你可以直接一步到達目的地(0,1),在(1, 0)或者(0, 3)位置的阻礙者都不可能抓住你。
示例 2:
輸入:
ghosts = [[1, 0]]
target = [2, 0]
輸出:false
解釋:你需要走到位於(2, 0)的目的地,但是在(1, 0)的阻礙者位於你和目的地之間。
示例 3:
輸入:
ghosts = [[2, 0]]
target = [1, 0]
輸出:false
解釋:阻礙者可以和你同時達到目的地。
說明:
很有意思的題目。一開始我總是在想如何才能判定阻礙者能不能抓住逃脫者,在半路上的情況十分複雜不知如何解決,真是太菜了,腦袋瓜子轉不過來!其實只要判定其中乙個阻礙者能比逃脫者早到或者同時到目的地,就可以判斷逃脫者逃脫失敗了。這時候只需要比較阻礙者與逃脫者到達目的地的步數大小就可以了,十分簡單!
**如下:
bool escapeghosts(int** ghosts, int ghostsrowsize, int *ghostscolsizes, int* target, int targetsize)
}return true;
}
程式設計珠璣 第7 8 9章
基本技巧 兩個答案比乙個答案好 快速檢驗 量綱檢驗 經驗法則 實踐little定律 系統中物體的平均數量等於物體離開系統 的平均速率和每個物體在系統中停留的平均時間的乘積 任何事都應盡量簡單,但不宜過於簡單 複雜深奧的演算法有時可以極大地提高程式效能 重要的演算法設計技術 儲存狀態,避免重複計算。通...
AcWing 789 數的範圍
給定乙個按照公升序排列的長度為n的整數陣列,以及 q 個查詢。對於每個查詢,返回乙個元素k的起始位置和終止位置 位置從0開始計數 如果陣列中不存在該元素,則返回 1 1 輸入格式 第一行包含整數n和q,表示陣列長度和詢問個數。第二行包含n個整數 均在1 10000範圍內 表示完整陣列。接下來q行,每...
AcWing 789 數的範圍
題目描述 給定乙個按照公升序排列的長度為n的整數陣列,以及 q 個查詢。對於每個查詢,返回乙個元素k的起始位置和終止位置 位置從0開始計數 如果陣列中不存在該元素,則返回 1 1 輸入格式 第一行包含整數n和q,表示陣列長度和詢問個數。第二行包含n個整數 均在1 10000範圍內 表示完整陣列。接下...