| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 蓝桥杯 基础练习全解 答案+解析 共17题 python -> 正文阅读 |
|
[数据结构与算法]蓝桥杯 基础练习全解 答案+解析 共17题 python |
关键字A+B问题,数列排序,十六进制转八进制,十六进制转十进制,十进制转十六进制,特殊回文数,回文数,特殊的数字,杨辉三角形,查找整数,数列特征,字母图形,01字串,闰年判断,斐波那契数列,圆的面积,序列求和。 前言前两天刷题刷到崩溃,天天WA,处处WA,真的很搞心态。就在我情绪低落之时,发现蓝桥杯基础练习还没做,于是我一口气把它给做完了,两个字,舒服。不过呢,我发现其中还是有一两条题目要求的不够规范,有歧义,比如‘字母图形’这道题,希望大家多多注意。 虽然这些都是基础题,但也是能通过多种方法实现的,比如杨辉三角我是通过组合数求解,而不是通过上面两数之和得出下一个数的; 斐波那契数列中我使用了递推来求解,而不是递归,我用三位数就能求出五位到六位的回文数,而不是在五位到六位数之间遍历匹配回文串等等 ,另外,我还会提到在除法计算中的精度问题。我们一起去看看吧! A+B问题
数列排序
我总结了两套排序算法的模板,分别是冒泡排序和快速排序,和一份二分查找的模板,感兴趣的朋友可以了解一下,点此进入。 十六进制转八进制对于进制转换,python也有相应的内置函数供我们使用。题目要求是十六进制转八进制,那么我们需要先将十六进制数转换成十进制,然后再将十进制数转换成八进制。 十六进制转换为十进制是使用int函数——int(“十六进制数”, 16),其中第一个参数是十六进制数的字符串,第二个参数是声明这是一个十六进制数。同理,八进制转十进制,二进制转十进制,都是以同样的方式进行处理。 转换成十进制后使用oct函数,将十进制数转换成八进制数。 注意,通过oct函数转换成八进制数后会有前缀“0o”表示这是一个八进制数,但题目规定不能有前缀,因此需要使用切片将其去除。
十六进制转十进制理解完上一题后这一题就不难了,同样使用python内置函数求解。
十进制转十六进制
特殊回文数
我们研究一下回文数可以发现,对于六位数的回文数而言,每个数都出现过两遍,右边的数字是左边数字倒序后的情况。比如123321,左边数字就是123 ,倒序之后就是321,那么把他们拼起来就是123321了。**对于五位数而言,除中间数字出现过一遍外,其他数字都出现过两遍。**而且右边的数字是左边数字除去最后一个数的倒序。比如12321,左边数字同样是123,右边数字是21 ,21 相当于123除去最后一个数字后变成12 然后倒序形成的21。 那么我们遍历所有三位数即可。获取三位数上的每一个数字,比较他们的和是否与正整数n相等,如果相等则输出。 需要注意的是,题目要求按顺序输出,而以这种思路输出的话并不是有序的,因为有五位数和六位数。所以我们要先将回文数存储到数组中,然后排个序,最后再输出。
特殊的数字
杨辉三角形
我们知道杨辉三角左右两边对称,因此我们只要求出左半部分就能得到一整行的元素了,杨辉三角还跟组合数有关,其里面的每一个元素都能用组合数表示。第N行的第M列可以表示成C(N-1,M-1),如6在第5行的第3列,它对应的组合数就是C(5-1,3-1),即C(4,2)。
需要特别注意的是: 涉及到除法运算时,有可能会出现小数的情况,像上面那种是特别容易出现的,那么这时候就要考虑会不会出现数据丢失了,当然,以后你都不用考虑,直接加上格式化函数,然后再转换成整型。先说说round函数的作用:保留若干位小数,round函数的第二个参数是多少就是保留多少位小数。与format函数不同的是,无论你写了保留多少位小数都会舍弃掉小数点后面的0。因为在除法中,有些数是除不尽的,这样就会造成数据丢失。举个例子,5 / 3 x 3, 5除以3后再乘3会等于5吗?,显然不等,因为电脑没有分数表示,5除以3后会得到一个数不尽的小数,既然是数不尽,而计算机又不能完全表示5/3这个数,当然会造成数据丢失了,因此 5 / 3 x 3 会很接近5 但不等于5。这时候round函数的作用来了,通过四舍五入就能够变成5.0,最后将其转换成整数,就是我们需要的结果了。其实round函数不是四舍五入,而是四舍六入,具体可以了解我的这篇文章。 既然知道了杨辉三角的两个性质,对称性与组合数,以及组合数的求解方法,那么我们就能来求杨辉三角了。
查找整数
也能够直接使用while遍历, 如果找到了标记为已找到,然后返回下标+1,否则返回-1. 我这里提供第二种解法。
数列特征
字母图形
既然已经知道了字母的出现方式,我们就能够制定相应的思路了。我们可以把一行图形分成两部分,左边是由A-Z的倒序排列组成,右边是第一行生成的元素,每生成新的一行,就挤掉右边的一个元素,相应的左边就添加一个元素。当完全挤掉右边元素后,接着左边的尾部元素就要把头部元素给挤走。
如果看不懂没关系,手写几遍模拟一下过程就懂了。 01字串
闰年判断
斐波那契数列
另一种效率更高的做法是递推。我们可以通过第一项(a)和第二项(b)求出第三项(c),然后第一项走到第二项,第二项走到第三项,这两项再相加得出第四项…以此类推。因为只要10007的余数,那么我们每次都对结果取余即可,结合代码分析一下。
圆的面积
序列求和
前面我们讲过在除法计算中,因为样例的类型是整型,为避免出现数据丢失,要使用round函数。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 15:47:56- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |