Python 程式檢查一個點是否可以轉換為另一個點
假設我們有一個起點 (sx, sy) 和一個目標點 (tx, ty),我們需要檢查是否存在從起點到終點的移動序列。這裡的移動包括取一個點 (x, y) 並將其轉換為 (x, x+y) 或 (x+y, y)。
所以,如果輸入類似於 (sx, sy) = (1,1) (tx, ty) = (4,5),則輸出將為 True,這是因為可以將 (1,1) 移動到 (2,1),然後 (3,1),然後 (4,1),然後 (4,5)。
為了解決這個問題,我們將遵循以下步驟:
定義一個函式 solve()。它將接收 sx、sy、tx、ty 作為引數。
如果 sx > tx 或 sy > ty,則
返回 False
如果 sx 等於 tx,則
返回 (ty-sy) 對 sx 取模是否等於 0
如果 sy 等於 ty,則
返回 (tx - sx) 對 sy 取模是否等於 0
返回 solve(sx, sy, tx-ty, ty) 或 solve(sx, sy, tx, ty-tx)
示例
讓我們看看下面的實現以更好地理解。
def solve(sx, sy, tx, ty): if sx > tx or sy > ty: return False if sx == tx: return (ty-sy)%sx == 0 if sy == ty: return (tx - sx)%sy == 0 return solve(sx, sy, tx-ty, ty) or solve(sx, sy, tx, ty-tx) (sx, sy) = (1,1) (tx, ty) = (4,5) print(solve(sx, sy, tx, ty))
輸入
(1,1), (4,5)
輸出
True
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP