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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

马走日字--回溯法

發(fā)布時(shí)間:2024/4/17 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 马走日字--回溯法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  ?馬走日字問(wèn)題,在n*m的棋盤(pán)中,馬只能走"日"字。馬從位置(x,y)出發(fā),把棋盤(pán)的每一格都走一次且只走一次。找出所有路徑。?

  這個(gè)問(wèn)題可以用回溯法解,每一步都有八種可能的走法,設(shè)馬當(dāng)前在(x,y)點(diǎn),則它的可能走到:

  (x+1,x+2),(x+1,x-2),(x-1,x+2),(x-1,x-2),(x+2,x+1),(x+2,x-1),(x-2,x+1),(x-2,x-1)

  對(duì)每一種可能的走法試一遍,如果出界了或者已經(jīng)走過(guò)了,則不用走了。試探一遍后,回溯。

  python實(shí)現(xiàn):

''' horse rides sun problem use backtracking algorithm author:ztp create at:2015/1/19 15:06 '''class HorseRides:def __init__(self, n, m, x, y):self.row = nself.column = mself.startx = xself.starty = yself.chessboard = [[0]*self.column for r in range(self.row+1)]self.sunx = [1, 1, 2, 2,-1,-1,-2,-2]self.suny = [2,-2, 1,-1, 2,-2, 1,-1]self.chessboard[self.startx][self.starty] = 1;self.count = 0;def check(self, x, y):if x >= self.row or y >= self.column or x < 0 or y < 0 or self.chessboard[x][y] != 0:return 0;return 1;def ride(self, x, y, step):for i in range(8):xx = x + self.sunx[i]yy = y + self.suny[i]if self.check(xx, yy) == 1:self.chessboard[xx][yy] = step;if step == self.row*self.column:self.output();else:self.ride(xx, yy, step+1)self.chessboard[xx][yy] = 0def output(self):self.count = self.count + 1print "count = %d" % self.countfor i in range(self.row):print self.chessboard[i]def getCount(self):return self.countif __name__ == "__main__":horseride = HorseRides(5,4,0,0)horseride.ride(0, 0, 2)print "total path: %d" % horseride.getCount()

  

轉(zhuǎn)載于:https://www.cnblogs.com/zhutianpeng/p/3438978.html

總結(jié)

以上是生活随笔為你收集整理的马走日字--回溯法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。