回溯演算法是一種純暴力搜尋演算法,可以解決組合問題、排列問題、子集問題、切割問題、棋盤問題…
class
solution
:def
readbinarywatch
(self, num:
int)
-> list[
str]
:# 暴力法:遍歷hour和minite,bin().count("1")實現統計二進位制表示中1的數量
res =
for h in
range(12
):for m in
range(60
):ifbin
(h).count(
"1")
+bin
(m).count(
"1")
==num:
"%d:%02d"
%(h,m)
)return res
class
solution
:def
subsets
(self, nums: list[
int])-
> list[list[
int]]:
# 偷看答案,就是不斷把最後乙個元素加入到res已有元素中形成tmp,再加入res中
res =[[
],]for num in nums:
res +=
[ele +
[num]
for ele in res]
return res
class
solution
:def
partition
(self, s:
str)
-> list[list[
str]]:
ifnot s:
return[[
]]iflen
(s)==1:
return
[[s]
] res =
for i in
range(1
,len
(s)+1)
:# 當分割前面是回文的時候
if s[
:i]==s[
:i][::
-1]:
# 前面回文加入到後面的所有可能結果中組成最終結果,後面部分用回溯嘛
res +=
[[s[
:i]]
+ ele for ele in self.partition(s[i:])
]return res
class
solution
:def
countarrangement
(self, n:
int)
->
int:
nums =
set(
range(1
,n+1))
used =
set(
) res =
0def
perfectlist
(num)
:nonlocal res
if num == n+1:
# 判斷回溯是否結束
res +=
1return
for ele in nums-used:
if num % ele ==
0or ele % num ==0:
used.add(ele)
perfectlist(num+1)
used.remove(ele)
# 回溯,將狀態重置到上一步,與上上行一起出現的
perfectlist(1)
return res
class
solution
:def
restoreipaddresses
(self, s:
str)
-> list[
str]
:def
backtrack
(allip, cnt, idx)
:if cnt ==
4and idx ==
len(s)
:# 回溯:判斷是否應該結束了1:
])return
if cnt >4:
# 回溯:非法狀態直接結束
return
for i in
range
(min(3
,len
(s)-idx)):
# 回溯:遍歷所有可能的情況
if s[idx]
=='0'
:# 考慮遇到0直接回溯,不在後面加數字了
backtrack(allip+
'.'+s[idx]
, cnt+
1, idx+1)
break
cur =
''for j in
range
(i+1):
cur += s[idx+j]if0
<=
int(cur)
<=
255:
backtrack(allip+
'.'+cur, cnt+
1, idx+j+1)
# 進行下一步嘗試,搜尋該子樹
iflen
(s)<4or
len(s)
>12:
# 回溯:首先判斷邊界條件
return
res =
backtrack('',
0,0)
# 回溯:根節點的輸入
return res
困難,溜了溜了
困難,打擾了
第十四周小結
這一周,我們分到了新的學習場地 609 我們組全員搬來了這裡。609在院裡被叫做 眾創空間 這裡不僅有著更好的學習條件,還存放著我們院裡的榮譽,一張一張的獎狀,還有精美的證書,讓我對信工院有了新的認識。同時,在日常生活中我也有一些自己的心得。一 執行力 結果很重要 之前 給我們在小組的所有成員開了乙...
第十四周總結
一.學習 今天很開心,因為我成功的做出了我人生的第乙個比較完整全面的頁面,雖然用的都是一些很簡單的 但那也是我花了乙個晚上做出來的,是我用這段時間所學的前端知識做出來的。雖然當時已經很晚了,但我絲毫感覺不到睡意,心中只有乙個目標,那就是今晚一定要完成它。或許對別人來說這不算什麼,但那張頁面被注入的精...
第十四周總結
又是新的一周,新的一周是新的起航,是夢的開始,每天的生活不需要過的多麼驚濤駭浪,只要我們是平平淡淡 腳踏實地 按照自己的追求走過的那就會有價值,就值得回憶。這周依舊平平淡淡,每天還是遵循自己的計畫一步步走過來的,最震撼的一件事就是我們搬到了609學習,可能是新環境的原因,這裡的學習氛圍相當好,條件也...