蓝桥杯Learning

Part 1 递归和递推

1. 简单斐波那契数列

n = int(input())st = [0]*(47) # 注意这个地方,需要将数组空间设置的大一些,否则会数组越界
st[1] = 0
st[2] = 1
# 这个方法相当于是递推,即先求解一个大问题的若干个小问题
def dfs(u):if u ==1:print(st[1],end=" ")if u ==2:print(str(st[1])+" "+str(st[2]),end=" ") # 注意在这个地方,在acwing当中需要进行强制类型转换if u>2 :for i in range (3,u+1):st[i] =st[i-1]+st[i-2]for i in range (1,u+1):print(st[i],end=" ")return
dfs(n)# 方法2 采用递归的方法,递归可以看做将一个大问题分解为若干个小问题,进行求解
def fibonacci(n):if n == 1:return 0elif n == 2:return 1else:fib_list = [0, 1] # 注意这个地方,python列表的下标从0开始for i in range(2, n):fib_list.append(fib_list[i-1] + fib_list[i-2])return fib_list[-1]n = int(input())
# 输出斐波那契数列的前 n 个数字
for i in range(1,n+1):print(fibonacci(i), end=' ')

2. 递归实现指数型枚举

# 指数枚举相当于每一个位置的数字可以选择或者不选
n = int(input())st = [0] * (n+1) #python当中的下标是从0开始的。该数组用于保存每个位置数字的选择情况。0表示无判断,2表示不选,1表示选def dfs(u):if u > n:for i in range(1, n + 1):if st[i] == 1:print(i, end=' ')print()return #注意,这里需要一个returnst[u] = 2dfs(u + 1)      # 第一个分支:不选st[u] = 0       # 恢复现场st[u] = 1dfs(u + 1)      # 第二个分支:选st[u] = 0dfs(1)

3. 递归实现排列型枚举

# 顺序1 依次枚举每个数放到哪个位置
# 顺序2 依次枚举每个位置放哪个数# 相当于是在求解一个全排列问题
# 排列问题当中需要一个判断是否重复的数组# 方法1:
n = int(input())
st = [0]*(n+1) # 表示当前的状态,0表示还没放数,1-n表示放了哪一个数
used =[False]*(n+1) # 表示某个数是否被用过, true表示已经用过def dfs(u):if u>n: #边界for i in range (1,n+1):print(st[i],end=' ') #打印每一个方案print()return #注意这个return的位置# 依次枚举每个分支,即当前位置可以填哪些数for i in range (1,n+1):if used[i] ==False:st[u] =iused[i] =Truedfs(u+1) # 注意每次递归运行到这里的时候现场还没有恢复#恢复现场st[u] =0used[i] = Falsedfs(1)

4.递归实现组合型枚举

n,m = map(int,input().split())
st = [0]*30def dfs(u,s): # u表示从第几个位置开始枚举,第二个位置表示当前从哪一个数开始if u ==m+1: #边界,表示已经选了m个数for i in range (1,m+1):print(st[i],end=' ')print()returnfor i in range(s,n+1):st[u] =idfs(u+1,i+1) # 注意这个地方,u相当于是指示当前是枚举第几个位置,i相当数是指示当前位置开始可以选择的最小的数st[u] =0 # 恢复现场dfs(1,1)

方法2:

n,m = map(int,input().split())
st = [0]*30def dfs(u,s): # u表示从第几个位置开始枚举,第二个位置表示当前从哪一个数开始if u+n-s < m: # 剪枝,相当于想后面所有数都选上都不够m个,则无解returnif u ==m+1: #边界,表示已经选了m个数for i in range (1,m+1):print(st[i],end=' ')print()returnfor i in range(s,n+1):st[u] =idfs(u+1,i+1) # 注意这个地方,u相当于是指示当前是枚举第几个位置,i相当数是指示当前位置开始可以选择的最小的数st[u] =0 # 恢复现场dfs(1,1)

5. 带分数问题

n = int(input())
st = [False] * 10
backup = [False] * 10ans = 0def check(a, c):b = n * c - a * cif not a or not b or not c:  # a,b,c 都不可以等于0return Falsebackup =st[:] # python当中的切片操作while b: # 此处需要注意将一个数各个位上的数字取出来的方法x = b % 10  # 取个位 先去取个位上的数字b //= 10  # 个位删掉if not x or backup[x]: # 需要去判断x是否为0,以及这个数是否被用过return Falsebackup[x] = Truefor i in range(1, 10): # 这个 for循环相当于去判断1-9是否都已经使用过if not backup[i]:return Falsereturn Truedef dfs_c(u, a, c):global ansif u == n:returnif check(a, c) == True:ans += 1for i in range(1, 10):  # 这部分相当于是去选cif st[i] == False:st[i] = Truedfs_c(u + 1, a, c * 10 + i) # 注意这里再一个数字后加上一位的方法st[i] = Falsedef dfs_a(u, a):  # u相当于是当前用了几个数字,a相当于当前位置a放置的数if (a >= n):  # 当a>n的时候,这种情况直接舍去returndfs_c(u, a, 0)  # 相当于在a的递归搜索数的叶子节点,再依次遍历 cfor i in range(1, 10):  # 这部分相当于去选a,即全排列位置a上的数字if st[i] == False:st[i] = Truedfs_a(u + 1, a * 10 + i)st[i] = Falsedfs_a(0, 0)
print(ans)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/706003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Object中的hashCode()

让hashcode方法的返回值为地址 vm参数中输入-XX:UnlockExperimentalVMOptions -XX:hashCode4&#xff0c;如下图&#xff1a; 参考 搞懂JAVAObject中的hashCode()_java_脚本之家 JDK核心JAVA源码解析(9) - hashcode 方法 - 知乎

pop链构造 [NISACTF 2022]babyserialize

打开题目 题目源代码如下 <?php include "waf.php"; class NISA{public $fun"show_me_flag";public $txw4ever;public function __wakeup(){if($this->fun"show_me_flag"){hint();}}function __call($from,$val){$this->fun$val[0];…

【小沐学QT】QT学习之Web控件的使用

文章目录 1、简介1.1 Qt简介1.2 Qt下载和安装1.3 Qt快捷键1.4 Qt帮助 2、QtWeb控件2.1 测试代码1&#xff08;QApplication&#xff09;2.2 测试代码2&#xff08;QApplicationQWidget&#xff09;2.3 测试代码3&#xff08;QApplicationQMainWindow&#xff09;2.4 测试代码4&…

记录一下 Unity团结引擎开发OpenHarmony Next 应用 环境搭建流程

原视频链接 记录环境搭建过程~&#xff0c;本文是图文版本 一、打开团结引擎官网下载对应的 团结引擎版本 官网地址&#xff1a;https://unity.cn/tuanjie/releases 根据各自的开发环境下载对应的软件版本&#xff0c;我是 windwos 环境&#xff0c;我就下载 windows 环境 …

微服务-实用篇

微服务-实用篇 一、微服务治理1.微服务远程调用2.Eureka注册中心Eureka的作用&#xff1a;搭建EurekaServer服务Client服务注册服务发现Ribbon负载均衡策略配置Ribbon配置饥饿加载 3.nacos注册中心使用nacos注册中心服务nacos区域负载均衡nacos环境隔离-namespaceNacos和Eureka…

深度学习神经网络实战:多层感知机,手写数字识别

目的 利用tensorflow.js训练模型&#xff0c;搭建神经网络模型&#xff0c;完成手写数字识别 设计 简单三层神经网络 输入层 28*28个神经原&#xff0c;代表每一张手写数字图片的灰度隐藏层 100个神经原输出层 -10个神经原&#xff0c;分别代表10个数字 代码 // 导入 Ten…

负载均衡.

简介: 将请求/数据【均匀】分摊到多个操作单元上执行&#xff0c;负载均衡的关键在于【均匀】。 负载均衡的分类: 网络通信分类 四层负载均衡:基于 IP 地址和端口进行请求的转发。七层负载均衡:根据访问用户的 HTTP 请求头、URL 信息将请求转发到特定的主机。 载体维度分类 硬…

前端开发_Vue入门

Vue概念 Vue 是一个用于构建用户界面的渐进式框架 构建用户界面&#xff1a;基于数据渲染出用户看到的页面渐进式&#xff1a;循序渐进框架&#xff1a;一套完整的项目解决方案 创建Vue实例 准备容器 引包&#xff08;开发版本/生产版本&#xff09; <script src"h…

消息中间件篇之Kafka-数据清理机制

一、Kafka文件存储机制 Kafka文件存储结构&#xff1a;一个Topic有多个分区。每一个分区都有多个段&#xff0c;每个段都有三个文件。 为什么要分段&#xff1f;1. 删除无用文件方便&#xff0c;提高磁盘利用率。 2. 查找数据便捷。 二、数据清理机制 1.日志的清理策略方案1 根…

[C++][linux]Linux上内存共享内存用法

一&#xff0c;什么是共享内存 共享内存&#xff08;Shared Memory&#xff09;&#xff0c;指两个或多个进程共享一个给定的存储区。进程可以将同一段共享内存连接到它们自己的地址空间中&#xff0c;所有进程都可以访问共享内存中的地址&#xff0c;就好像它们是由用C语言函…

GEE入门篇|遥感专业术语(实践操作4):光谱分辨率(Spectral Resolution)

目录 光谱分辨率&#xff08;Spectral Resolution&#xff09; 1.MODIS 2.EO-1 光谱分辨率&#xff08;Spectral Resolution&#xff09; 光谱分辨率是指传感器进行测量的光谱带的数量和宽度。 您可以将光谱带的宽度视为每个波段的波长间隔&#xff0c;在多个波段测量辐射亮…

RestTemplate启动问题解决

⭐ 作者简介&#xff1a;码上言 ⭐ 代表教程&#xff1a;Spring Boot vue-element 开发个人博客项目实战教程 ⭐专栏内容&#xff1a;个人博客系统 ⭐我的文档网站&#xff1a;http://xyhwh-nav.cn/ RestTemplate启动问题解决 问题&#xff1a;在SpringCloud架构项目中配…

Java SpringBoot 整合 MyBatis 小案例

Java SpringBoot 整合 MyBatis 小案例 基础配置&#xff08;注意版本号&#xff0c;容易报错&#xff09; pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http…

TikTok东南亚小店爆单思路,怎么玩?

东南亚地区的跨境电商市场已经成为全球范围内最具吸引力的市场之一&#xff0c;在各个跨境电商平台上&#xff0c;都是转化率最高的站点之一。TikTok作为电商黑马&#xff0c;吸引了一大波跨境电商玩家入驻&#xff0c;其中东南亚小店也成为热门的选择&#xff0c;那么东南亚小…

当Vue项目启动后,通过IP地址方式在相同网络段的其他电脑上无法访问前端页面?

当Vue项目启动后&#xff0c;通过IP地址方式在相同网络段的其他电脑上无法访问前端页面&#xff0c;可能是由以下几个原因造成的&#xff1a; 服务监听地址&#xff1a;默认情况下&#xff0c;许多开发服务器&#xff08;如Vue CLI的vue-cli-service serve&#xff09;只监听lo…

ky10-server docker 离线安装包、离线安装

离线安装脚本 # ---------------离线安装docker------------------- rpm -Uvh --force --nodeps *.rpm# 修改docker拉取源为国内 rm -rf /etc/docker mkdir -p /etc/docker touch /etc/docker/daemon.json cat >/etc/docker/daemon.json<<EOF{"registry-mirro…

kubectl 命令行管理K8S(上)

目录 陈述式资源管理方式 介绍 命令 项目的生命周期 创建 kubectl create命令 发布 kubectl expose命令 更新 kubectl set 回滚 kubectl rollout 删除 kubectl delete 应用发布策略 金丝雀发布 陈述式资源管理方式 介绍 1.kubernetes 集群管理集群资源…

深圳市萨科微半导体有限公司一直研究新材料新工艺

深圳市萨科微&#xff08;www.slkoric.com&#xff09;半导体有限公司一直研究新材料新工艺&#xff0c;不断推出新产品&#xff0c;驱动公司不断发展。最近萨科微slkor推出SL40T120FL系列IGBT单管&#xff0c;和CMOS运算放大器SLA333等产品&#xff0c;为新能源汽车、太阳能光…

【lv14 day10内核模块参数传递和依赖】

一、模块传参 module_param(name,type,perm);//将指定的全局变量设置成模块参数 /* name:全局变量名 type&#xff1a; 使用符号 实际类型 传参方式 bool bool insmod xxx.ko 变量名0 或 1 invbool bool insmod xxx.ko 变量名0 或 1 charp char * insmod xxx.ko 变量名“字符串…

基于Java学生管理系统设计与实现(源码+部署文档)

博主介绍&#xff1a; ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅 &#x1f447;&#x1f3fb; 不然下次找不到 Java项目精品实…