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

算法day30 回溯6

332 重新安排行程

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

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

例如,行程 [“JFK”, “LGA”] 与 [“JFK”, “LGB”] 相比就更小,排序更靠前。
假定所有机票至少存在一种合理的行程。且所有的机票 必须都用一次 且 只能用一次。
在这里插入图片描述

# 回溯+used
def backtracking(tickets,used,path,cur,result):if len(path)==len(tickets)+1:result.append(path[:]) # 因为剪枝,对应下面找到一个路径就返回,不能return path[:]return True for i,ticket in enumerate(tickets):if ticket[0]==cur and used[i]==False:used[i]=Truepath.append(ticket[1])state=backtracking(tickets,used,path,ticket[1],result)path.pop()used[i]=Falseif state:return True # 找到一个路径就行,不需要再搜索
def findItinerary(tickets:'List[List[str]]')->'List[str]':tickets.sort() #字母小的排在前面used=[False]*len(tickets)path=['JFK']result=[]backtracking(tickets,used,path,'JKF',result):return result[0]# 回溯+字典 
# 待搞懂
def findItinerary(tickets):target=defaultdict(list)for ticket in tickets:target[ticket[0]].append(ticket[1])for airport in target:target[airport].sort()path=['JFK']backtracking(target,path,len(tickets))return path def backtracking(target,path,ticketNum):if len(path)==ticketNum+1:return Trueairport=path[-1]destinations=target[airport]for i,dest in enumerate(destinations):target[airport].pop(i)path.append(dest)if backtracking(target,path,ticketNum):return Truetarget[airport].insert(i,dest)path.pop()return False

51 N皇后

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

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

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

每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。
在这里插入图片描述
在这里插入图片描述

def solveNQueens(n:int)->'List[List[str]]':result=[]chessboard=['.'*n for _ in range(n)]  # 原本n*n -> 1*nbacktracking(n,0,chessboard,result)return [[''.join(row)for row in solution]for solution in result] def backtracking(n,row,chessboard,result):if row==n:result.append(chessboard[:])return for col in range(n):if isValid(row,col,chessboard):chessboard[row]=chessboard[row][:col]+'Q'+chessboard[row][col+1:]backtracking(n,row+1,chessboard,result)chessboard[row]=chessboard[row][:col]+'.'+chessboard[row][col+1:]def isValid(row,col,chessboard):# 是否同一列出现多个Q for i in range(row):if chessboard[i][col]=='Q': return False # 是否45度角出现多个Qi,j=row-1,col-1while i>=0 and j>=0:if chessboard[i][j]=='Q':return Falsei-=1j-=1# 是否135度角出现多个Qi,j=row-1,col+1while i>=0 and j<len(chessboard):if chessboard[i][j]=='Q':return Falsei-=1j+=1return True

37 解数独

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

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

数字 1-9 在每一行只能出现一次。
数字 1-9 在每一列只能出现一次。
数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)
数独部分空格内已填入了数字,空白格用 ‘.’ 表示。
在这里插入图片描述

def backtracking(board)->bool:for i in range(len(board)):#行for j in range(len(board[0])):#列if board[i][j]!='.':continuefor k in range(1,10):if isValid(i,j,k,board):board[i][j]=str(k)if backtracking(board):return Trueboard[i][j]='.'return False #1-9都不能成功填入,无解返回Faslereturn True
def isValid(row,col,val,board)->bool:for i in range(9):if board[row][i]==str(val):return Falsefor j in range(9):if board[j][col]==str(val):return False# 根据row、col判断在第几个子子宫格内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  
def solveSudoku(board:'List[List[str]]')->None:backtracking(board)

相关文章:

算法day30 回溯6

332 重新安排行程 给你一份航线列表 tickets &#xff0c;其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK&#xff08;肯尼迪国际机场&#xff09;出发的先生&#xff0c;所以该行程必须从 JFK …...

分享three.js实现乐高小汽车

前言 Web脚本语言JavaScript入门容易&#xff0c;但是想要熟练掌握却需要几年的学习与实践&#xff0c;还要在弱类型开发语言中习惯于使用模块来构建你的代码&#xff0c;就像小时候玩的乐高积木一样。 应用程序的模块化理念&#xff0c;通过将实现隐藏在一个简单的接口后面&a…...

gpt的构造和原理

gpt是序列预测模型。 问答是通过确定问答格式样本训练出来的&#xff01;比如“Q&#xff1a;xxxx.A:xxx"本质还是根据前面的序列预测后面的序列。在自回归训练过程中&#xff0c;文本序列&#xff08;可能包含问题和紧随其后的答案&#xff09;被视为一个整体输入到模型…...

基于springboot实现教师人事档案管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现IT技术交流和分享平台系统演示 摘要 我国科学技术的不断发展&#xff0c;计算机的应用日渐成熟&#xff0c;其强大的功能给人们留下深刻的印象&#xff0c;它已经应用到了人类社会的各个层次的领域&#xff0c;发挥着重要的不可替换的作用。信息管理作为计算…...

K8S之Job和CronJob控制器

这里写目录标题 Job概念适用场景使用案例 CronJob概念适用场景使用案例 Job 概念 Job控制器用于管理Pod对象运行一次性任务&#xff0c;例如&#xff1a;对数据库备份&#xff0c;可以直接在k8s上启动一个mysqldump备份程序&#xff0c;也可以启动一个pod&#xff0c;这个pod…...

基于SSM的基于个人需求和地域特色的外卖推荐系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的基于个人需求和地域特色的外卖推荐系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…...

哈佛大学商业评论 --- 第三篇:真实世界中的增强现实

AR将全面融入公司发展战略&#xff01; AR将成为人类和机器之间的新接口&#xff01; AR将成为人类的关键技术之一&#xff01; 请将此文转发给您的老板&#xff01; --- 本文作者&#xff1a;Michael E.Porter和James E.Heppelmann 虽然物理世界是三维的&#xff0c;但大…...

华为ICT七力助推文化产业新质生产力发展

创新起主导作用的新质生产力由新劳动者、新劳动对象、新劳动工具、新基础设施等四大要素共同构成&#xff0c;符合新发展理念的先进生产力质态&#xff1b;具有高科技、高能效、高质量等三大突出特征。而通过壮大新产业、打造新模式、激发新动能&#xff0c;新质生产力能够摆脱…...

FastGpt流程

1.知识库 引入文本——>数据清洗 最好将pdf/ppt/xx转换成文本&#xff0c;在文本里面进行数据清洗&#xff08;以防知识库删除后&#xff0c;数据清洗失效&#xff09; 可以插图&#xff0c;将图片通过网页检查F12查看路径放进去 或者直接在csdn放&#xff0c;直接复制链接…...

怎么在UE游戏中加入原生振动效果

我是做振动触感的。人类的五感“视听嗅味触”&#xff0c;其中的“触”就是触觉&#xff0c;是指皮肤、毛发与物体接触时的感觉。触感可以带来更加逼真的沉浸式体验。但也许过于司空见惯&#xff0c;也是习以为常&#xff0c;很多人漠视了触感的价值。大家对触感的认知还远远不…...

【Hadoop技术框架-MapReduce和Yarn的详细描述和部署】

前言&#xff1a; &#x1f49e;&#x1f49e;大家好&#xff0c;我是书生♡&#xff0c;今天的内容主要是Hadoop的后两个组件&#xff1a;MapReduce和yarn的相关内容。同时还有Hadoop的完整流程。希望对大家有所帮助。感谢大家关注点赞。 &#x1f49e;&#x1f49e;前路漫漫&…...

蓝桥杯刷题 前缀和与差分-[3507]异或和之和(C++)

题目描述 给定一个数组 Ai&#xff0c;分别求其每个子段的异或和&#xff0c;并求出它们的和。 或者说&#xff0c;对于每组满足 1≤L≤R≤n 的 L&#xff0c;R求出数组中第 L 至第 R 个元素的异或和。 然后输出每组 L&#xff0c;R 得到的结果加起来的值。 输入格式 输入…...

background背景图参数边渐变CSS中创建背景图像的渐变效果

效果:可以看到灰色边边很难受,希望和背景融为一体 原理: 可以使用线性渐变&#xff08;linear-gradient&#xff09;或径向渐变&#xff08;radial-gradient&#xff09;。以下是一个使用线性渐变作为背景图像 代码: background: linear-gradient(to top, rgba(255,255,255,0)…...

『大模型笔记』吴恩达:AI 智能体工作流引领人工智能新趋势

吴恩达:AI 智能体工作流引领人工智能新趋势 文章目录 一. 概述二. AI 智能体的设计模式2.1. 反思(Reflection)2.2. 使用工具(Tool use)2.3. 规划(Planning)2.4. 多智能体协作(Multi-agent collaboration)三. 最后总结四. 参考文献一. 概述 我期待与大家分享我在 AI 智能体方面…...

腾讯光子工作室群 一面 (30min)

问题&#xff1a; 你毕业是打算考研还是直接工作 深挖项目&#xff08;介绍、剖析遇到问题如何解决&#xff09;&#xff1a; 你在进行攻击的时候会不会有穿模的情况&#xff0c;怎么解决 为什么会造成卡顿&#xff08;多嘴说的&#xff09; 说说行为树和状态机之间的差别 …...

Linux的信号栈的实现(1)

作者 pengdonglin137@163.com 环境 Linux 6.5 + ARM64 概述 在前一篇文章中介绍了Linux系统中的几种栈以及它们之间的切换,进程在用户态和内核态会使用不同的栈,在用户态的主线程和其他线程都有各自的栈,此外进程在执行信号处理程序时也需要栈,那么这个栈来自哪呢? …...

Python学习笔记——heapq

堆排序 思路 堆排序思路是&#xff1a; 将数组以二叉树的形式分析&#xff0c;令根节点索引值为0&#xff0c;索引值为index的节点&#xff0c;子节点索引值分别为index*21、index*22&#xff1b;对二叉树进行维护&#xff0c;使得每个非叶子节点的值&#xff0c;都大于或者…...

搜索与图论——拓扑排序

有向图的拓扑排序就是图的宽度优先遍历的一个应用 有向无环图一定存在拓扑序列&#xff08;有向无环图又被称为拓扑图&#xff09;&#xff0c;有向有环图一定不存在拓扑序列。无向图没有拓扑序列。 拓扑序列&#xff1a;将一个图排成拓扑序后&#xff0c;所有的边都是从前指…...

linux CentOS7配置docker的yum源并安装

[TOC](这里写目录标题 配置yum源Docker的自动化安装一些其他启动相关的命令&#xff1a; 配置yum源 使用以下命令下载CentOS官方的yum源文件 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 清除yum缓存 yum clean all 更新yum缓存…...

vue结合Elempent-Plus/UI穿梭框更改宽度以及悬浮文本显示

由于分辨率不同会导致文本内容显示不全&#xff0c;如下所示&#xff1a; 因此需要 1、悬浮到对应行上出现悬浮信息 实现代码如下所示&#xff1a; 这里只演示Vue3版本代码&#xff0c;Vue2版本不再演示 区别就在插槽使用上Vue3使用&#xff1a;#default“”&#xff1b;Vu…...

30分钟零基础入门:DJI Cloud API Demo实现无人机云平台集成的完整指南

30分钟零基础入门&#xff1a;DJI Cloud API Demo实现无人机云平台集成的完整指南 【免费下载链接】DJI-Cloud-API-Demo 项目地址: https://gitcode.com/gh_mirrors/dj/DJI-Cloud-API-Demo DJI Cloud API Demo是一个开源项目&#xff0c;主要功能是帮助开发者快速实现无…...

【开题答辩全过程】以 基于大数据的智能推送系统设计与实现为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…...

医学影像组学实战:Pyradiomics YAML配置文件全解析(附完整示例)

医学影像组学实战&#xff1a;Pyradiomics YAML配置文件全解析&#xff08;附完整示例&#xff09; 在医学影像分析领域&#xff0c;特征提取是构建精准诊断模型的关键步骤。Pyradiomics作为开源的医学影像组学工具包&#xff0c;通过YAML配置文件提供了高度灵活的特征提取方案…...

避坑指南:Xilinx MIG降频配置与Synopsys VIP仿真的时序参数设置

Xilinx MIG降频配置与Synopsys VIP仿真的时序参数避坑指南 在高速存储接口设计中&#xff0c;DDR控制器的配置与验证往往是项目成败的关键节点。当遇到需要降频使用的场景时——比如标称2400MHz的颗粒实际运行在2000MHz——工程师往往会在时序参数配置和验证环境匹配上踩坑。本…...

Windows 11系统优化终极指南:一键清理预装软件与隐私保护

Windows 11系统优化终极指南&#xff1a;一键清理预装软件与隐私保护 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本&#xff0c;用于从Windows中移除预装的无用软件&#xff0c;禁用遥测&#xff0c;从Windows搜索中移除Bing&#xff0c;以及执行各种其他更改以简化…...

HarmonyOS6 ArkTS List 跳转准确

文章目录一、功能概述二、官方核心知识点1. 为什么普通 scrollTo 跳转不准&#xff1f;2. childrenMainSize3. ListScroller.scrollTo三、完整可运行代码四、代码核心逻辑解析1. 声明 ChildrenMainSize2. 配置不规则子项高度3. List 绑定 childrenMainSize4. 执行精准滚动跳转总…...

LFM2.5-1.2B-Thinking-GGUF效果展示:32K上下文下跨PDF章节引用准确性验证

LFM2.5-1.2B-Thinking-GGUF效果展示&#xff1a;32K上下文下跨PDF章节引用准确性验证 1. 模型能力概览 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的轻量级文本生成模型&#xff0c;专为低资源环境优化设计。该模型采用GGUF格式存储&#xff0c;配合llama.cpp运行时&#xff…...

nlp_structbert_sentence-similarity_chinese-large保姆级教程:前端React界面二次开发与定制化UI集成指南

nlp_structbert_sentence-similarity_chinese-large保姆级教程&#xff1a;前端React界面二次开发与定制化UI集成指南 1. 引言&#xff1a;为什么需要定制化UI&#xff1f; 如果你已经体验过基于StructBERT-Large的语义相似度工具&#xff0c;可能会发现它的基础界面虽然功能…...

别再瞎找了!AI论文平台2026最新测评与推荐

2026年真正好用的AI论文平台&#xff0c;核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测&#xff0c;千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队&#xff0c;覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…...

大数据核心知识全解(零基础到Hadoop专家路线)【20260324】001篇

文章目录 大数据核心知识全解(零基础到Hadoop专家路线) 一、为什么会出现大数据?(本质原因) 1. 数据来源爆炸 2. 传统技术扛不住 3. 需求倒逼 二、CNCF 是什么?(云原生核心组织) 它和大数据的关系 三、为什么 Hadoop 会流行?(3个核心原因) 1. 它解决了当时最痛的问题…...