日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

数据结构与算法(Python)– 回溯法(Backtracking algorithm)

發布時間:2025/3/12 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构与算法(Python)– 回溯法(Backtracking algorithm) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據結構與算法(Python)– 回溯法(Backtracking algorithm)


1、回溯法

回溯算法實際上一個類似枚舉的搜索嘗試過程,主要是在搜索嘗試過程中尋找問題的解,當發現已不滿足求解條件時,就“回溯”返回,嘗試別的路徑。回溯法是一種選優搜索法,按選優條件向前搜索,以達到目標。但當探索到某一步時,發現原先選擇并不優或達不到目標,就退回一步重新選擇,這種走不通就退回再走的技術為回溯法,而滿足回溯條件的某個狀態的點稱為“回溯點”。采用的是深度優先搜索。


2、迷宮

題目: 一個 N × M的二維數組 maze 表示一個迷宮,其中的1表示墻壁,0表示可以走,只能橫著走或豎著走,不能斜著走,找出從左上角到右下角的最短路線。入口點為[0,0],既第一空格是可以走的。

回溯法:

# 走迷宮 def move(i, j):global path# 當前點變為1,表示已經走過,避免循環繞圈走不出去maze[i][j] = 1temp_path.append((i, j))# 如果已經走到了出口,即右下角,判斷是不是最短路徑if i == N - 1 and j == M - 1:if len(path) == 0 or len(temp_path) < len(path):path = []path.extend(temp_path)# 向下走if 0 <= i + 1 < N and not maze[i + 1][j]:move(i + 1, j)# 向右走if 0 <= j + 1 < M and not maze[i][j + 1]:move(i, j + 1)# 向上走if 0 <= i - 1 < N and not maze[i - 1][j]:move(i - 1, j)# 向左走if 0 <= j - 1 < M and not maze[i][j - 1]:move(i, j - 1)# 如果上下左右都走不通或者已經走到出口了,退回上一步,恢復現場temp_path.pop()maze[i][j] = 0while True:try:# 輸入迷宮大小N, M = map(int, input().split())maze = []path = []temp_path = []# 輸入迷宮地圖for _ in range(N):maze.append(list(map(int, input().split())))# 走迷宮move(0, 0)# 打印路徑for p in path:print('(' + str(p[0]) + ',' + str(p[1]) + ')')except:break

3、數獨

題目: 根據9X9網格上的已知數字,推算出所有剩余空格的數字,并且滿足每一行、每一列、每一個3X3網格內的數字均含1-9,并且不重復。

回溯法:

# 檢查該位置填該數字是否滿足要求 def check(m,n,e):# 檢查行if e in s[m]:return False# 檢查列if e in s_T[n]:return False# 檢查3X3網格x=m//3*3y=n//3*3for i in range(x,x+3):for j in range(y,y+3):if s[i][j]==e:return Falsereturn True# 填數字 def move(k):if k==81:return 0# 從左到右,從上到下遍歷每一格row,col=k//9,k%9# 如果是該格為空if s[row][col]=='0':# 從1~9依次嘗試for e in num:# 如果該數滿足要求,該格填上該數if check(row,col,e):s[row][col]=es_T[col][row]=e# 移到下一格。如果下一格不管填什么都不滿足要求,恢復現場if move(k+1):s[row][col]='0's_T[col][row]='0'else:return 0# 如果1~9都不滿足,返回1return 1else:if move(k+1):return 1while True:try:# 輸入s=[input().split() for i in range(9)]s_T=[[s[i][j] for i in range(9)] for j in range(9)]num=['1','2','3','4','5','6','7','8','9']# 填數字move(0)# 打印for i in range(9):print(' '.join(s[i]))except:break

GOOD LUCK!


總結

以上是生活随笔為你收集整理的数据结构与算法(Python)– 回溯法(Backtracking algorithm)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 黄色一及片 | 东方成人av在线 | 操色网| 三级在线网址 | 日韩a视频| 亚洲精品视频久久 | 青娱乐在线免费观看 | 黑人极品ⅴideos精品欧美棵 | 青青草精品在线视频 | 9i看片成人免费 | 欧美一级全黄 | 日本作爱视频 | 免费av电影网址 | 国产午夜大片 | 好屌妞视频这里有精品 | 亚洲精品福利在线观看 | 奇米影视一区二区 | 五月激情网站 | 亚洲国产中文字幕在线 | 精品人妻一区二区三区日产乱码 | 99免费看 | 日韩av线| 午夜精品福利视频 | 一区二区三区四区人妻 | 一色道久久88加勒比一 | 99久久久国产精品免费蜜臀 | 欧美视频日韩 | 亚洲乱强伦 | 天天干夜夜想 | 久久精品91 | 国模婷婷| 国产精品久久久久久亚洲色 | 国产日产欧美 | 糖心视频在线 | 九色91av| 国产精久久久 | 亚洲天天干| 青青国产在线视频 | 日韩精品视频网站 | 91麻豆精品国产91久久久久久 | 狠狠爱夜夜操 | 一直草 | 香蕉视频黄污 | 97狠狠操| 中文字幕无码日韩专区免费 | 日本性爱视频在线观看 | 好吊妞一区二区三区 | 色婷婷精品久久二区二区密 | 爱插网| 久久久久久无码精品人妻一区二区 | 九九热免费在线视频 | 国产成人精品电影 | 一区视频网站 | 成人av免费在线播放 | av尤物| 亚洲国产精品一区 | 亚洲天堂第一区 | 日韩av电影网 | 国产精品美女一区二区三区 | 欧美精品乱码视频一二专区 | 日韩欧av| 人妻丰满熟妇av无码区不卡 | 免费久久av | 天天看天天爽 | 亚洲成人激情小说 | 人与动物毛片 | 亚洲综合国产 | 国产不卡在线视频 | 一级片免费的 | 久久精品视频免费 | 小明成人免费视频 | 自拍偷拍av | 男女啪啪网站免费 | 国产亚洲成av人片在线观看桃 | v99av| jzzijzzij亚洲成熟少妇在线播放 狠狠躁日日躁夜夜躁2022麻豆 | 国产伦精品一区二区三区视频我 | 久久免费视屏 | 九九综合网| 美女爽爽爽 | 日b免费视频 | 一区二区三区午夜 | 国产精品免费一区二区三区四区 | 欧美日韩在线免费观看 | 日韩激情在线播放 | 中文在线免费看视频 | 猛1被调教成公厕尿便失禁网站 | 自拍偷拍日韩精品 | 久久天天躁狠狠躁夜夜av | 特级黄色片 | 欧美成人国产精品一区二区 | 亚洲综合另类 | 亚洲精品国产片 | 久久91视频 | 夜福利视频 | 欧美日韩国产精品一区 | 久久久久久免费视频 | 国产美女精品 | 少妇饥渴难耐 |