蓝桥杯Learning

news2024/11/6 3:07:02

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. 递归实现指数型枚举

# 指数枚举相当于每一个位置的数字可以选择或者不选
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 #注意,这里需要一个return

    st[u] = 2
    dfs(u + 1)      # 第一个分支:不选
    st[u] = 0       # 恢复现场

    st[u] = 1
    dfs(u + 1)      # 第二个分支:选
    st[u] = 0

dfs(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] =i
            used[i] =True
            dfs(u+1) # 注意每次递归运行到这里的时候现场还没有恢复
            #恢复现场
            st[u] =0
            used[i] = False

dfs(1)

4.递归实现组合型枚举

n,m = map(int,input().split())
st = [0]*30

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

        st[u] =0 # 恢复现场

dfs(1,1)

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

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

相关文章

黑马程序员——接口测试——day03

目录: Potman断言 Postman断言简介Postman常用断言 断言响应状态码断言包含某字符串断言JSON数据Postman断言工作原理Postman关联 简介实现步骤核心代码创建环境案例1案例2Postman参数化 简介数据文件简介编写数据文件 CSV文件JSON文件导入数据文件到postman读取数…

数据安全治理实践路线(下)

数据安全运营阶段通过不断适配业务环境和风险管理需求,持续优化安全策略措施,强化整个数据安全治理体系的有效运转。 数据安全运营 1. 风险防范 数据安全治理的目标之一是降低数据安全风险,因此建立有效的风险防范手段,对于预防…

3、函数定义,函数调用,this指向总结,闭包

一、函数的定义方式 1、函数声明 function demo1() {var num 12var result Math.pow(num,2)//指数函数return result }2、函数表达式 var demo2 function (x,y) { //内置对象arguments前面的两个参数 是 x,yvar sum arguments[0] arguments[1]console.log(sum) }3、构…

web组态插件

插件演示地址:http://www.byzt.net 关于组态软件,首先要从组态的概念开始说起。 什么是组态 组态(Configure)的概念来自于20世纪70年代中期出现的第一代集散控制系统(Distributed Control System)&#xf…

docker build基本命令

背景 我们经常会构建属于我们应用自己的镜像,这种情况下编写dockerfile文件不可避免,本文就来看一下常用的dockerfile的指令 常用的dockerfile的指令 首先我们看一下docker build的执行过程 ENV指令: env指令用于设置shell的环境变量&am…

渗透测试—信息收集

渗透测试—信息收集 1. 收集域名信息1.1. 域名注册信息1.2. SEO信息收集1.3. 子域名收集1.3.1. 在线子域名收集1.3.2. 子域名收集工具 1.4. 域名备案信息1.5. ICP备案号查询1.6. SSL证书查询 2. 收集真实IP2.1. 超级ping2.2. Ping2.3. CDN绕过 3. 收集旁站或C段IP3.1. 旁站或C段…

一款非常专业的图形设计工具CorelDRAW2024中文破解版

CorelDRAW2024(简称CDR2024)是一款非常专业的图形设计工具,该产品推出了全新的2023版本,在功能和体验上更进一步,最新的填充和透明设备功能可以完全控制任何类型的纹理,适用于网络摄影、印刷项目、艺术、排…

【析】装卸一体化车辆路径问题的自适应并行遗传算法

0 引言 国内外有关 VRPSPD的文献较多,求解目标多以最小化车辆行驶距离为主,但现实中可能存在由租赁费用产生的单次派出成本,需要综合考 虑单次派车成本和配送路径成本。…

JetBrains系列工具,配置PlantUML绘图

PlantUML是一个很强大的绘图工具,各种图都可以绘制,具体的可以去官网看看,或者百度。 PlantUML简述 https://plantuml.com/zh/ PlantUML语言参考指引 https://plantuml.com/zh/guide PlantUML语言是依赖Graphviz进行解析的。Graphviz是开源…

Superhuman 邮箱的替代方案是什么?

Superhuman是一个极好的人工智能工具在电子邮件助理领域。根据SimilarWeb的最新统计,它在全球网站排名中排名第21980位,月访问量为1751798。然而市场上还有许多其他优秀的选择。为了帮助您找到最适合您需求的解决方案,我们为您精心挑选了10种…

快让Live2D小可爱住进你的网站吧

文章目录 一、效果请欣赏二、教程1.下载项目工程2.本地自行修复测试3. 测试 一、效果请欣赏 二、教程 1.下载项目工程 github地址 可以根据工程的readme来使用demo测试,demo中需要修改 autoload.js api的cdnPath或者apiPath,否则加载不出来人物图片 api…

10个Premiere创意设计项目列表文字清单视频模板素材

10个创意设计项目列表文字清单pr模板视频制作素材,高清分辨率:19201080,Premiere Pro 2019项目,无需插件,包括视频教程,预览图像不包括音频不包括。 更多PR素材下载:https://prmuban.com/37908.…

vue2.0及起步(前端面试知识积累)

1、需要了解的vue概要知识 1、vue是什么? 一套用于构建用户界面的渐进式JavaScript框架。 为什么vue被称为是渐进式JS框架? 答:Vue允许开发者在不同的项目中以渐进式的方式使用它,这种渐进式表现在以下的方面: 逐步采…

linux中将普通用户添加sudo权限

1.登录root权限账号,编辑/etc/sudoers文件 2.找到"root ALL(ALL) ALL",并在下面添加普通用户 格式:username ALL(ALL) ALL vim /etc/sudoers ## Next comes the main part: which users can run what software …

搜维尔科技:【周刊】适用于虚拟现实VR中的OptiTrack

适用于 VR 的 OptiTrack 我们通过优化对虚拟现实跟踪最重要的性能指标,打造世界上最准确、最易于使用的广域 VR 跟踪器。其结果是为任何头戴式显示器 (HMD) 或洞穴自动沉浸式环境提供超低延迟、极其流畅的跟踪。 OptiTrack 主动式 OptiTrack 世界领先的跟踪精度和…

调度服务看门狗配置

查看当前服务器相关的sqlserver服务 在任务栏右键,选择点击启动任务管理器 依次点击,打开服务 找到sqlserver 相关的服务, 确认这些服务是启动状态 将相关服务在看门狗中进行配置 选择调度服务,双击打开 根据上面找的服务进行勾…

【C进阶】顺序表详解

文章目录 📝线性表的概念🌠 顺序表🌉顺序表的概念 🌠声明--接口🌉启动🌠初始化🌉扩容🌠尾插🌉 打印🌠销毁🌉 尾删🌠头插🌉…

【大厂AI课学习笔记NO.54】2.3深度学习开发任务实例(7)数据标注和数据集拆分

数据标注 有时我们会把特征工程和数据集的标注弄混淆,在普通的机器学习项目中,我们需要进行特征工程,但是在深度学习项目过程中,我们需要进行数据标注工作。 标注工具 在本案例中,使用的是开源的标注工具Labelme&am…

SSMBUG之 url +

1. Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured. 经查, 书写一切正常. 注意到此时yml文件的图标是一个红色的Y而不是绿色的spring , 推测没有正确加载. 重新创建项目, 所有东西拷贝一份便恢复正常…

递归与回溯(一)

递归 递归一定要有出口,不然会无限调用,死循环 string fun(int n){if(n0)return "a";if(n1)return "b";return fun(n - 1) fun(n - 2); }输出前8种结果: 双写数字递归例子 注意递归的return int doubleNum(int n){i…