1#@author :whycai2#
@time :2021/3/18 21:5334
"""5
二維網格和乙個單詞,找出該單詞是否存在網格中
61.單詞必須按照字母順序,通過相鄰的單元格內的字母工程,其中 「相鄰」單元格是那些水平或垂直相鄰的單元格,同乙個單元格內的字母不允許重複使用78
例子:9
board = 10[
11['a','b','c','e'],
12['s','f','c','s'],
13['a','d','e','e']14]
1516
word = 'abcced' 返回true
17word = 'see' 返回true
18word = 'abcb' 返回false
1920
board和word只包含大小寫英文本母
21board、board[i],word 長度 >=1
22"""
23import
copy
2425
class
solution:
26def wordexist(self, board,word) ->bool:27#
網格 長、高,單詞的長度
28 boardlen =len(board[0])
29 boardhei =len(board)
30 wordlen =len(word)
3132
#單詞長度比網格還多
33if wordlen > boardlen * boardhei:return
false
3435
defwordcont(i, j, pos,w):
36'''
37判斷網格周圍是否存在該單詞
38:param i: 網格 橫座標
39:param j: 網格縱座標
40:param pos: 標識網格,其中的值為'1',代表已使用
41:param w: 單詞的下標
42:return:
43'''44#
標識該位置已使用
45 pos[i][j] = '1'
46#長度相同,單詞遍歷結束
47if wordlen ==w:return
true
4849
#從已找到的網格座標(i,j)的四周查詢下個單詞是否存在
50for a, b in [(1, 0), (0, 1), (-1, 0), (0, -1)]:
51 ia = i +a
52 jb = j +b
53if ia >= 0 and ia < boardhei and jb >= 0 and jb < boardlen and pos[ia][jb] != '1'
and board[ia][jb] ==word[w]:
54if wordcont(ia,jb,pos,w+1) :return
true55#
標識恢復初始原值,重新查詢
56 pos=copy.deepcopy(board)
57 pos[i][j] = '1'
58return
false
5960
#遍歷網格,如果第乙個單詞存在,則進入 wordcont()查詢剩餘單詞
61for i in
range(boardhei):
62for j in
range(boardlen):
63if board[i][j] == word[0] and wordcont(i,j,copy.deepcopy(board),1):
64return
true
65return
false
6667
print(solution().wordexist([['
a','
b','
c','
e'],['
s','
f','
c','
s'],['
a','
d','
e','
e']],'
abcced
'))
python書中練習題 python練習題
1 定義乙個空列表,接收從鍵盤輸入的整數,把列表傳給乙個從大到小排序的函式,再輸出排序後的列表的值 listex b 0 a int input 請輸入列表長度 while b a num int input 請輸入字元 b 1 print listex sum 0 for i in range 0...
python的練習題 Python練習題
1 使用while迴圈輸入1 2 3 4 5 6 8 9 10 i 0while i 10 i i 1 if i 7 continue print i 結果 e python python python test.py1 2 求1 100的所有數的和 i 0sum 0 while i 100 i 1...
python練習題目
三色球問題 有紅 黃 藍三種顏色的求,其中紅球 3 個,黃球 3 個,綠球 6 個。先將這 12 個球混合放在乙個盒子中,從中任意摸出 8 個球,程式設計計算摸出球的各種顏色搭配。print red tyellow tblue for red inrange 0,4 for yellow in ra...