題目描述:
共有 n 名小夥伴一起做遊戲。小夥伴圍成一圈,按順時針順序從1到n編號。確切地說,從第 i 名小夥伴順時針移動一位會到達第 (i+1) 名小夥伴的位置,其中 1 <= i < n,從第 n 名小夥伴順時針移動一位會回到第 1 名小夥伴的位置。標籤:動態規劃、約瑟夫環遊戲遵頊如下規則:
從第 1 名小夥伴所在位置開始
沿著順時針方向數 k 名小夥伴,計數時需要包含起始時位置的那位小夥伴。逐個繞圈進行計數,一些小夥伴可能會被數過不止一次
你數到的最後一名小夥伴需要離開圈子,並視作輸掉遊戲
如果圈子中仍然有不止一名小夥伴,從剛剛輸掉的小夥伴的順時針下一位小夥伴開始,回到步驟2繼續執行
否則,圈子中最後一名小夥伴贏得遊戲
給你參與遊戲的小夥伴總數 n,和乙個整數k,返回遊戲的獲勝者
建立模型
# 1 -> n-k+1
# 2 -> n-k+2
# ...
# k -> 退出遊戲
# k+1 -> 1
# k+2 -> 2
# ...
# n -> n-k
由上面的規律可以得到這樣乙個關係式:
\[f(n) = (f(n - 1) + k - 1) \% n + 1
\]編碼實現
def findthewinner(n: int, k: int) -> int:
# 初始狀態, n=1時獲勝者就是該小夥伴
winner = 1
for i in range(2, n+1):
winner = (winner + k - 1) % n + 1 # 狀態轉移方程
return winner
rdesktop18 3編譯安裝
tar xvzf rdesktop 1.8.3.tar.gz cd rdesktop 1.8.3 安裝必要的庫 sudo apt get install libpcsclite dev libgssglue dev libssl dev 在chromebook的trusty中會出現乙個lib11的庫...
18 3 執行緒的宣告週期
1 概述 執行緒具有生命週期,其中包含7種狀態,分別為出生狀態 就緒狀態 執行狀態 等待狀態 休眠狀態 阻塞狀態和死亡狀態。出生狀態就是執行緒被建立時處於的狀態,在使用者使用該執行緒例項呼叫start 方法之前都處於出生狀態 當使用者呼叫start 方法後,執行緒處於就緒狀態 又被稱為可執行狀態 當...
搜尋SaaS公司Algolia融資1830萬美元
techcrunch報道,algolia拿到accel領投的a輪融資,其他投資者包括許多知名公司高管 parse的ilya sukhar,docker的solomon hykes,kevin rose和splunk的erik swan。如果你是hacker news的資深使用者,一定知道hn自己沒有...