![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法竞赛
算法程序员&mlh
这个作者很懒,什么都没留下…
展开
-
动态规划算法---钢条切割
算法进阶---动态规划算法钢条切割问题:程序实现:钢条切割问题:程序实现:方法一和方法二是对程序实现的不断深入,逐渐降低算法实现的时间复杂度。p = [0, 1, 5, 8, 9, 10, 17, 17, 20, 21, 23, 24, 26, 27, 27, 28, 30, 33, 36, 39, 40]# p = [0, 1, 5, 8, 9, 10, 17, 17, 20, 24, 30]#方法一,两边都切割,重复了很多计算#@cal_timedef cut_rod_recu原创 2022-03-29 22:47:10 · 2675 阅读 · 1 评论 -
2021python组D题
思路分析:这道题可谓是究极嵌套!融合了最短路径,最小公倍数和动态规划。一个不会就全凉了~最小公倍数我已经整理成精简模板放代码里了,考试时直接套模板就行。动态规划经典的做题步骤有5步。#最小公倍数模板(least common multiple)#关键是求出a,b两个数的最大公约数cdef lcm(a,b): if a<b: a,b=b,a c,d=a,b while d!=0: c,d=d,c%d return..转载 2022-03-26 22:16:59 · 644 阅读 · 0 评论 -
2021python组C题
思路分析:长宽高,三重循环,枚举暴力.两个知识点:一个是约数,另一个是集合。1、判断约数算法: n%i==0约数指的是被整除后没有余数的数。举个栗子:3%1 == 0 ; 3%3 ==0 , 1和3就是3的约数。2、创建集合容器方法:docker=set()选用集合作为容器存放数据,是因为集合的数据不会重复。相同的数据不会重复添加。import timestart = time.time()n=2021041820210418 #货物数量cnt..转载 2022-03-25 22:22:55 · 422 阅读 · 0 评论 -
2021python组B题
思路:通过确定不同的点之间确定的斜率与截距,将其放入集合中,利用集合的特征(唯一性)对重复的直线进行筛选。我们先将垂直于x轴的直线(斜率不存在的直线)排除在外,再统计其余的直线。#穷举法import timestart = time.time()# 确定点列表。平面上20X21个整点{(x,y)|0≤x<20,0≤y<21,x∈Z,y∈Z}ptslist = [(x,y) for x in range(20) for y in range(21)]kdset = set() # 构建一个集合.原创 2022-03-24 22:39:23 · 1439 阅读 · 0 评论 -
2021python组A题
方法一,str(i).count("1")import timestart = time.time()#解题思路:拼数字的话1的卡片肯是用的最快的num=0for i in range(1,10000): num+=str(i).count("1") #计算字符串i中,字符1出现的次数。 if 2021 == num: print(i) breakend = time.time()print(end - start) #所用时间为2ms左右.原创 2022-03-23 21:04:57 · 966 阅读 · 0 评论 -
蓝桥杯基础练习VIP---高精度加法
@[TOC](蓝桥杯基础练习VIP---高精度加法)## 高精度加法>问题描述: 输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。>题目所给算法描述: 由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b。==计算c = a + b的时候,首先将A[0]与B[0]相加,如果有进位产生,则把进位(即和的十位数)存入r,把和的原创 2022-03-16 22:41:18 · 110 阅读 · 0 评论 -
蓝桥杯基础练习VIP---阶乘计算
@[TOC](蓝桥杯基础练习VIP---阶乘计算)## 阶乘计算>问题描述: 输入一个正整数n,输出n!的值。其中n!=1乘2乘3*…*n。>题目所给算法描述: n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组A来表示一个大整数a,A[0]表示a的个位,A[1]表示a的十位,依次类推。将a乘以一个整数k变为将数组A的每一个元素都乘以k,**注意处理相应的进位**。 首先将a设为1,然后乘2,乘3,当乘到n时,即得到了n!的值。>输入格式: 输入包原创 2022-03-15 22:55:26 · 1139 阅读 · 0 评论 -
蓝桥杯基础练习---特殊数字
@[TOC](蓝桥杯基础练习---特殊数字)## 特殊的数字>问题描述: 153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1的3次方+5的3次方+3的3次方=1+125+27。编程求所有满足这种条件的三位十进制数。>输出格式: 按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。==pow(x,y)表示求解x的y次幂pow(x,y,z)表示求解x的y次幂对z取余后的结果==原创 2022-03-15 10:17:00 · 7222 阅读 · 0 评论 -
蓝桥杯基础练习---进制转换
## 蓝桥杯基础练习-进制转换==转化为二进制:bin()函数;转化为八进制:oct()函数;转化为十进制:int()函数;转化为十六进制:hex()函数。====【注意】:==(1).lower()方法可将字符串中的所有大写字母变为小写(2).upper()方法可将字符串中的所有小写字母变为大写(3).title()方法将每个单词的首字母都改为大写(4)而.capwords()并不是字符串本身的方法,而是string模块中的函数,使用.capwords()函数将一个字符串中的所有独立的英文单词原创 2022-03-14 16:04:18 · 432 阅读 · 0 评论 -
蓝桥杯基础练习---特殊回文数、回文数
## 蓝桥杯基础练习---特殊回文数、回文数### 1、回文数回文数:表示该数字从左边读和从右边读一样。>问题描述: 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。>输出格式: 按从小到大的顺序输出满足条件的四位十进制数。原创 2022-03-14 20:57:38 · 1272 阅读 · 0 评论 -
蓝桥杯基础训练-数列排序
求解问题方法1、首先做出判断输入的n值合法,满足1<=n<=200,强制转化为int型,默认为str2、满足上面的要求,然后再将待排序的数字,存于列表ls中,强制转换为list类型,并将所有的数据由str变成int型3、使用 ls.sort()排序,默认reverse=False从小到大输出,reverse=True则相反4、通过for循环打印列表中数据,end=' '的作用是输出不换行。原创 2022-03-04 17:40:26 · 107 阅读 · 0 评论 -
蓝桥杯中必知的python基础知识
蓝桥杯中必知的python基础知识重点说一下,蓝桥杯python组中,题目一般都会要求写输入输出,而像LeetCode中的算法练习,更适用于找工作时用,算法题主要按照算法思想编写函数体,不考虑输入的变量,只考虑函数的返回值。下面将介绍关于蓝桥杯python组的一些基础知识。原创 2022-03-03 22:23:15 · 1764 阅读 · 0 评论 -
蓝桥杯入门-1、Fibonacci数列-Python
数值过大可能是测试用例的输入很大导致的,列表中数据太多导致内存超限;另一方面,输入数值过大,有可能会发生计算错误的情况。针对上面这两种情况,我们做一下改进:Python语句的改进只保留想要的,列表里只存放2个值累加过程中,超过10007时,就减去10007原创 2022-03-03 18:00:58 · 219 阅读 · 0 评论