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

北京做网站商标的公司seo是做什么工作内容

北京做网站商标的公司,seo是做什么工作内容,做车贷的网站,大连手机自适应网站建设公司目录 详细布置: 1. 回溯总结 2. 332. 重新安排行程 3. 51. N 皇后 4. 37. 解数独 详细布置: 1. 回溯总结 回溯是递归的副产品,只要有递归就会有回溯,所以回溯法也经常和二叉树遍历,深度优先搜索混在一起&#x…

目录

详细布置:

1. 回溯总结

2. 332. 重新安排行程

3. 51. N 皇后

4. 37. 解数独


详细布置:

1. 回溯总结

回溯是递归的副产品,只要有递归就会有回溯,所以回溯法也经常和二叉树遍历,深度优先搜索混在一起,因为这两种方式都是用了递归。

回溯法就是暴力搜索,并不是什么高效的算法,最多再剪枝一下。

回溯算法能解决如下问题:

  • 组合问题:N个数里面按一定规则找出k个数的集合
  • 排列问题:N个数按一定规则全排列,有几种排列方式
  • 切割问题:一个字符串按一定规则有几种切割方式
  • 子集问题:一个N个数的集合里有多少符合条件的子集
  • 棋盘问题:N皇后,解数独等等

详细总结可以移步代码随想录:回溯总结- 代码随想录


2. 332. 重新安排行程

给你一份航线列表 tickets ,其中 tickets[i] = [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。

所有这些机票都属于一个从 JFK(肯尼迪国际机场)出发的先生,所以该行程必须从 JFK 开始。如果存在多种有效的行程,请你按字典排序返回最小的行程组合。

  • 例如,行程 ["JFK", "LGA"] 与 ["JFK", "LGB"] 相比就更小,排序更靠前。

假定所有机票至少存在一种合理的行程。且所有的机票 必须都用一次 且 只能用一次。

直觉上来看 这道题和回溯法没有什么关系,更像是图论中的深度优先搜索。

实际上确实是深搜,但这是深搜中使用了回溯的例子,在查找路径的时候,如果不回溯,怎么能查到目标路径呢。

所以我倾向于说本题应该使用回溯法,那么我也用回溯法的思路来讲解本题,其实深搜一般都使用了回溯法的思路,在图论系列中我会再详细讲解深搜。

这里就是先给大家拓展一下,原来回溯法还可以这么玩!

这道题目有几个难点:

  1. 一个行程中,如果航班处理不好容易变成一个圈,成为死循环
  2. 有多种解法,字母序靠前排在前面,让很多同学望而退步,如何该记录映射关系呢 ?
  3. 使用回溯法(也可以说深搜) 的话,那么终止条件是什么呢?
  4. 搜索的过程中,如何遍历一个机场所对应的所有机场。
from collections import defaultdictclass Solution:def findItinerary(self, tickets):targets = defaultdict(list)  # 创建默认字典,用于存储机场映射关系for ticket in tickets:targets[ticket[0]].append(ticket[1])  # 将机票输入到字典中for key in targets:targets[key].sort(reverse=True)  # 对到达机场列表进行字母逆序排序result = []self.backtracking("JFK", targets, result)  # 调用回溯函数开始搜索路径return result[::-1]  # 返回逆序的行程路径def backtracking(self, airport, targets, result):while targets[airport]:  # 当机场还有可到达的机场时next_airport = targets[airport].pop()  # 弹出下一个机场self.backtracking(next_airport, targets, result)  # 递归调用回溯函数进行深度优先搜索result.append(airport)  # 将当前机场添加到行程路径中

3. 51. N 皇后

按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。

n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。

给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。

每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。


4. 37. 解数独

编写一个程序,通过填充空格来解决数独问题。

数独的解法需 遵循如下规则

  1. 数字 1-9 在每一行只能出现一次。
  2. 数字 1-9 在每一列只能出现一次。
  3. 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)

数独部分空格内已填入了数字,空白格用 '.' 表示。

N皇后问题 是因为每一行每一列只放一个皇后,只需要一层for循环遍历一行,递归来遍历列,然后一行一列确定皇后的唯一位置。

本题就不一样了,本题中棋盘的每一个位置都要放一个数字(而N皇后是一行只放一个皇后),并检查数字是否合法,解数独的树形结构要比N皇后更宽更深

class Solution:def solveSudoku(self, board: List[List[str]]) -> None:"""Do not return anything, modify board in-place instead."""self.backtracking(board)def backtracking(self, board: List[List[str]]) -> bool:# 若有解,返回True;若无解,返回Falsefor i in range(len(board)): # 遍历行for j in range(len(board[0])):  # 遍历列# 若空格内已有数字,跳过if board[i][j] != '.': continuefor k in range(1, 10):if self.is_valid(i, j, k, board):board[i][j] = str(k)if self.backtracking(board): return Trueboard[i][j] = '.'# 若数字1-9都不能成功填入空格,返回False无解return Falsereturn True # 有解def is_valid(self, row: int, col: int, val: int, board: List[List[str]]) -> bool:# 判断同一行是否冲突for i in range(9):if board[row][i] == str(val):return False# 判断同一列是否冲突for j in range(9):if board[j][col] == str(val):return False# 判断同一九宫格是否有冲突start_row = (row // 3) * 3start_col = (col // 3) * 3for i in range(start_row, start_row + 3):for j in range(start_col, start_col + 3):if board[i][j] == str(val):return Falsereturn True

http://www.zhongyajixie.com/news/59879.html

相关文章:

  • MATLAB 做网站全能搜
  • 怎样创办一个网站seo自然排名
  • 深圳价格实惠的网站建设公司国外引流推广平台
  • asp动态网站 是什么优化人员配置
  • 塘厦仿做网站域名注册需要多久
  • 制作网站登录适合交换友情链接的是
  • 国内十大网站建设公司百度信息流推广技巧
  • 网站建设设计风格如何与色彩搭配指数型基金
  • 网站无法导入照片新平台推广
  • 怎样建设一个自己的网站首页百度商店应用市场
  • 深圳整合营销上海搜索优化推广
  • 常熟做公司网站故事式的软文广告例子
  • 外贸soho做网站如何推广自己的店铺
  • 做3d图的网站有哪些河源市企业网站seo价格
  • 专门做外国的网站有哪些百家号权重查询站长工具
  • 十大网页设计大全seo就业前景
  • 网站怎么做跳转页面企业培训课程名称大全
  • 广东网站建设公司保定百度推广联系电话
  • 重庆九龙坡区哪里有做网站的爱站工具下载
  • 360免费建站不要钱网络营销的方法有哪些?
  • 做网站后期自己可以维护吗资源搜索神器
  • 做标书有哪些好网站在线友情链接
  • 网络营销有哪些推广方法珠海网站seo
  • 小说网站风格百度账号登录官网
  • wordpress防注册插件河北网站seo外包
  • 东莞做网站公司有哪些seo优化一般包括
  • 网站注册地址查询今日国内新闻最新消息
  • 网站建设 豫icp备sem论坛
  • 旅游类网站怎么做百度seo排名技术必不可少
  • 国内特效网站seo引流什么意思