当前位置: 首页 > news >正文

seo网站平台网站建设相关知识博客

seo网站平台,网站建设相关知识博客,北京小客车指标调控管理信息系统,网页版微信怎么艾特别人第七章 回溯算法 332.重新安排行程51.N皇后37.解数独代码随想录文章详解 332.重新安排行程 (1)参考 创建map存储src,[]dest映射关系,并对[]dest排序 每次取map中第一个dest访问,将其作为新的src,每访问一条src->dest&#xff…

第七章 回溯算法

  • 332.重新安排行程
  • 51.N皇后
  • 37.解数独
  • 代码随想录文章详解

332.重新安排行程

(1)参考
创建map存储src,[]dest映射关系,并对[]dest排序
每次取map中第一个dest访问,将其作为新的src,每访问一条src->dest,删除该记录。
如果访问的src没有dest了,将当前节点加入结果集,并沿栈返回。
结果是沿栈返回的,故需要逆序输出

func findItinerary(tickets [][]string) []string {res := []string{}m := make(map[string][]string, 0)for _, ticket := range tickets {src, dest := ticket[0], ticket[1]m[src] = append(m[src], dest)}for k:= range m {sort.Strings(m[k])}var help func(srcTicket string)help = func(srcTicket string) {for {if v, ok := m[srcTicket]; !ok || len(v) == 0 {break}tmp := m[srcTicket][0]m[srcTicket] = m[srcTicket][1:]help(tmp)}res = append(res, srcTicket)}help("JFK")for i, j := 0, len(res)-1; i < j; i, j = i+1, j-1 {res[i], res[j] = res[j], res[i]}return res
}

(2)回溯:超时了
排列问题。先对tickets排序,used记录当前车票是否被使用
若车票使用完并找到路径,返回,否则回溯查找路径

func findItinerary(tickets [][]string) []string {sort.Slice(tickets, func(i, j int) bool {return tickets[i][1] < tickets[j][1]})path := []string{"JFK"}used := make([]bool, len(tickets))var help func(srcTicket string, ticket [][]string) boolhelp = func(srcTicket string, ticket [][]string) bool {if len(path) == len(tickets)+1 {return true}for i, next := range tickets {if next[0] == path[len(path)-1] && !used[i] {path = append(path, next[1])used[i] = trueif help(next[1], tickets) {return true}path = path[:len(path)-1]used[i] = false}}return false}help("JFK", tickets)return path
}

51.N皇后

回溯
row控制递归深度,for循环控制列,进而确定当前位置
判断当前值是否有效:因为每行只选取一个位置,故只需判断列和正斜、反斜方向是否有皇后

func solveNQueens(n int) [][]string {res := [][]string{}board := make([][]string, n)for i := 0; i < n; i++ {board[i] = make([]string, n)}for i := 0; i < n; i++ {for j := 0; j < n; j++ {board[i][j] = "."}}var help func(row int, board [][]string) boolhelp = func(row int, board [][]string) bool {if row == n {temp := make([]string, n)for i, rowStr := range board {temp[i] = strings.Join(rowStr, "")}res = append(res, temp)}for i := 0; i < n; i++ {if isValid(n, row, i, board) {board[row][i] = "Q"if help(row+1, board) {return true}board[row][i] = "."}}return false}help(0, board)return res
}func isValid(n, row, col int, board [][]string) bool {for i := 0; i < row; i++ {if board[i][col] == "Q" {return false}}for i, j := row-1, col-1; i >= 0 && j >= 0; i, j = i-1, j-1 {if board[i][j] == "Q" {return false}}for i, j := row-1, col+1; i >= 0 && j < n; i, j = i-1, j+1 {if board[i][j] == "Q" {return false}}return true
}

37.解数独

回溯
当前位置有效性判断:行、列、九宫格数字不重复
如果当前位置能放数字,且有效,递归,否则回溯

func solveSudoku(board [][]byte) {var help func(board [][]byte) boolhelp = func(board [][]byte) bool {for i := 0; i < 9; i++ {for j := 0; j < 9; j++ {if board[i][j] == '.' {for k := '1'; k <= '9'; k++ {if isValid(i, j, byte(k), board) {board[i][j] = byte(k)if help(board) {return true}board[i][j] = '.'}}return false}}}return true}help(board)
}func isValid(row, col int, val byte, board [][]byte) bool {for i := 0; i < 9; i++ {if board[row][i] == val {return false}}for i := 0; i < 9; i++ {if board[i][col] == val {return false}}startRow := (row / 3) * 3startCol := (col / 3) * 3for i := startRow; i < startRow+3; i++ {for j := startCol; j < startCol+3; j++ {if board[i][j] == val {return false}}}return true
}

代码随想录文章详解

332.重新安排行程
51.N皇后
37.解数独
回溯总结篇

http://www.yayakq.cn/news/772641/

相关文章:

  • 九里微网站开发wordpress 归档文章
  • 怎样找到网站后台入口网站开发后台php技术
  • 做网站是不是需要服务器电商网站开发实验报告
  • 个人网站导航模版南充公司做网站
  • 昆明企业建站程序wordpress 维护
  • 怎么做网站的搜索功能网站做扫一扫
  • 服装网站推广计划书范文500字西宁做网站建设公司哪家好
  • 网站的大小商城网站建设最好的公司
  • 企业网站推广哪个公司好丹阳建设局网站
  • 织梦网站需要付费吗郑州网站服务公司
  • 在建设工程信息网河北seo技术交流
  • 企业信息型网站有哪些可以做点赞的网站
  • wordpress 导航站主题wordpress安装完不显示
  • 网站建设的基本技术步骤遵义本地网络平台
  • 英山建设银行网站wordpress怎么看html5
  • 网站空间 支持什么程序验证wordpress
  • 郑州网站建设(智巢)谷歌推广怎么做最有效
  • 动易网站 教程桂林人论坛桂林板路
  • 做网站前端需要懂得怎么样在网上建设网站挣钱
  • 网站建设费需要摊销吗佛山网站建设企业报价
  • 网站域名不想实名认证c语言程序设计网站
  • 怎样查到一些做品牌包的网站物联网应用技术就业方向及前景
  • 网站建设人才招聘百度网站建设及推广
  • 县文化馆网站建设方案wordpress博客模板推荐
  • 站长平台官网wordpress 删除的模板文件在哪
  • 企业网站推广的方法有?优化设计电子版在哪找
  • 成考做那个网站的题比较好wordpress速度主题
  • 龙华建设局网站个人网站图片加载慢
  • 做企业展示网站需要多少钱wordpress爬取文章插件
  • 兰州医院网站制作网站新类型