算法
文章平均质量分 53
Y3pro
欢迎一起讨论问题
展开
-
蓝桥杯—动态规划
写在前面:通过在B站看闫氏dp分析法,进一步深入理解动态规划,这里学完之后总结一下,方便复习,因为这也是一个常看常新的内容动态规划的核心问题:有限集中的最值问题(最大值、最小值、数量、存不存在)分析过程:分为两个阶段1、状态表示包含:集合和属性(max、min、bool,一般问的是什么,属性就是什么)2、状态计算a、将一个整体的问题划分成多个子集问题(如求最大值,可以先求每个子集的最大值,然后求子集间的最大值)b、怎么划分子集?(要求不重复、不遗漏)划分依据:寻找最后一个不同点3、经典问题原创 2022-04-06 00:25:38 · 1062 阅读 · 0 评论 -
蓝桥杯-并查集的运用(二)
写在前面:越是刷题,越发现自己不会的越多,现在的思路是把之前学过的知识点复习一下,把刷过的题重新过一遍,避免犯同样的错误题目一 国王的烦恼这是一道值得学习的题目,整体的框架还是并查集,但在并查集的基础上,比较偏重于对思维的考验,这道题目运用到了反向思维,能想明白就很简单题目链接题目描述C国由n个小岛组成,为了方便小岛之间联络,C国在小岛间建立了m座大桥,每座大桥连接两座小岛。两个小岛间可能存在多座桥连接。然而,由于海水冲刷,有一些大桥面临着不能使用的危险。如果两个小岛间的所有大桥都不能使用,原创 2022-04-05 00:12:05 · 197 阅读 · 0 评论 -
蓝桥杯-完全背包问题
写在前面:考试临近抱佛脚,只能是多熟悉基础的算法,掌握核心,最近今天把背包问题好好学一学,通过题目来学习算法题目一(经典完全背包)题目有 N 种物品和一个容量是 V 的背包,每种物品都有无限件可用。第 i 种物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。状态集合(确定dp数组的含义)dp[i][j] 表示从前i个物品中选,总体积不超过j状态转移方程(确定怎么由更小的结构得到dp[i][[j])方程一:dp[i]原创 2022-04-03 00:08:47 · 399 阅读 · 0 评论 -
两个好玩的题目——异或
写在前面:今天看到阮一峰博客上有关异或的文章,异或总是可以给人眼前一亮的感觉,有助于发散自己的思维,记录一下题目一一个数组包含 n-1 个成员,这些成员是 1 到 n 之间的整数,且没有重复,请找出缺少的那个数字。这里利用异或的性质两个相同的数异或为零0与其他数异或得其他数自己A[0] ^ A[1] ^ ... ^ A[n-2] ^ 1 ^ 2 ^ ... ^ n解决代码class Solution: def missingNumber(self, nums: List[i原创 2022-03-31 20:35:53 · 128 阅读 · 0 评论 -
蓝桥杯-特殊回文数
写在前面:现在算法学的差不多,开始刷题,争取把简单的题全部做对,稍微难一点的题能够尽可能做问题描述123321是一个非常特殊的数,它从左边读和从右边读是一样的。 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。输入格式输入一行,包含一个正整数n。输出格式按从小到大的顺序输出满足条件的整数,每个整数占一行。#有点思维难度的做法#加个数组排序后输出n = int(input())L = [] for i in range(1, 10): if原创 2022-03-23 13:08:48 · 114 阅读 · 0 评论 -
蓝桥杯-贪心算法
写在前面:贪心算法是算法中最简单的算法,最好理解,最好写代码的算法,通过这次的学习,熟练掌握了这个算法,接下来要往更加复杂的算法学,提高能力 贪心算法(Greedy algorithm),又称贪婪算法。是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而使得问题得到全局最优解。 要求:所有的选择是无后效性的,即当前所作的选择不影响后续选择对于结果的影响 适用范围:该问题的每一步选择都在选择最优的情况下能够导致最终问题的答案也是最优例题1、找零问题问题描述假设商店老板原创 2022-03-19 00:26:54 · 1249 阅读 · 0 评论 -
差分与前缀和
写在前面:这两种方法在之前做题也有遇到过,但没有系统的学习,这次通过系统学习,将这两个类似的方法总结下,自己推导一遍表达式更能增加理解,做记录如下一、差分法 差分法的应用主要是用于处理区间问题。当某一个数组要在很多不确定的区间,加上相同的一个数。我们如果每个都进行加法操作的话,那么复杂度 O(nm) 是平方阶的,非常消耗时间。 如果我们采用差分法,将数组拆分,构造出一个新的拆分数组,通过对数组区间的端点进行加减操作,最后将数组和并就能完成原来的操作。 这样处理后,时间复杂度降低为 O(N),虽原创 2022-03-17 22:57:43 · 167 阅读 · 0 评论 -
蓝桥杯-并查集的运用(一)
并查集的运用写在前面:学了并查集这个数据结构,找了一些应用题目来做1、朋友圈问题·题目:假如已知有n个人和m对好友关系(存于数组r)如果两个人是直接或间接的好友(好友的好友的好友…),则认为他们属于同一个朋友圈,请写程序求出这n个人里一共有多少个朋友圈。·假如:n = 5,m = 3,r = {undefined{1 , 2} , {2 , 3} , {4 , 5}}表示有5个人,1和2是好友,2和3是好友,4和5是好友,则1、2、3属于一个朋友圈4、5属于另一个朋友圈,结果为2个朋友圈。测试集原创 2022-02-24 15:27:31 · 288 阅读 · 0 评论 -
求一个数组中不同元素的个数
问题:求一个数组中不同元素的个数解决:1、采用hash数组,设一个hash数组,初始化为0,如果hash[i] == 0,说明存在i这个元素,将 hash[i] = 1,将hash数组求和即可2、采用比较方式,将数组排序,相邻两个比较,如果不相等,那么元素数量要加一L = [1, 8, 2, 6, 7, 8, 5, 5, 4]#采用hash数组,hash数组的和为不同元素个数#时间复杂度为O(N)def method1(L): Max = max(L) Hash = [0 fo原创 2022-02-24 07:55:18 · 1719 阅读 · 0 评论 -
蓝桥杯-并查集学习
蓝桥杯-并查集学习 写在前面:就像发现新大陆一样发现这个数据结构,这是一个很有意思的数据结构,很好玩,深入学习一下记录下来一、概念 并查集用来处理一系列不相交的集合,支持合并和查询两种操作,并查集的重要思想在于,用集合中的一个元素代表集合。二、构造1、初始化父节点数组def initialize(parent, rank): for i in range(len(parent)): parent[i] = -1 #使用路径压缩,parent初始化为 p原创 2022-02-22 22:36:27 · 364 阅读 · 0 评论 -
迷宫问题的DFS和BFS解法
迷宫问题的DFS和BFS解法 写在前面:通过迷宫问题来熟悉dfs和bfs解法,加深对于这两种搜索方式的理解与运用DFS算法注:DFS可以求第一条路径,也可以求最短路径算法过程dfs(顶点V){ 标记顶点V以遍历; for(对于每一个邻接V且未被标记的顶点u); dfs(u);}Map = [[1 for i in range(100)] for j in range(100)]#迷宫数组,0表示可以通行,1表示不可通行vis = [[0 for原创 2022-02-21 09:56:00 · 3591 阅读 · 0 评论 -
datetime模块
知识学习-datetime模块一、datetime提供的类date,表示日期的类time,表示时间的类datetime,表示日期和时间的类timedelta,表示时间间隔的类(很好用)tzinfo,与时区有关的类二、使用方法1、引入datetime模块import datetime2、引入datetime下面的类from datetime import *from datetime import datefrom datetime import time……三、dateti原创 2022-02-15 11:52:15 · 504 阅读 · 0 评论 -
蓝桥杯-2018年省赛A组1-6题(python解题)
蓝桥杯-2018年省赛A组(python解题)写在前面的话:由于水平不高,目前只写了前面六道题,后面加油把另外四道难一点的题写出来第一题 分数题目描述算出结果1/1+1/2+1/4+1/8+⋯每项是前一项的一半,如果一共有 20项,求这个和是多少,结果用分数表示出来。类似:3/2,当然,这只是加了前 2项而已。分子分母要求互质。题目解答'''方法一:自己的思路'''L = [2**i for i in range(20)]fenzi = sum(L)fenmu = L[-1原创 2022-01-27 16:57:24 · 8369 阅读 · 0 评论 -
蓝桥杯刷题-打印图形
蓝桥杯-打印图形DAY THREE写在前面的话:趁着寒假,刷题必须要抓紧题目标题:打印图形如下的程序会在控制台绘制分形图(就是整体与局部自相似的图形)。当n=1,2,3的时候,输出如下:请仔细分析程序,并填写划线部分缺少的代码。n=1时: o ooo o n=2时: o ooo o o o o ooooooooo o o o o ooo o n=3时:原创 2022-01-23 00:06:48 · 460 阅读 · 0 评论 -
蓝桥杯刷题-最大公共子串
蓝桥杯-最大公共子串DAY TWO写作前面的话:似乎简单的题就直接暴力法,简单快速,对于我等新手很适合题目描述最大公共子串长度问题就是: 求两个串的所有子串中能够匹配上的最大长度是多少。比如:“abcdkkk” 和 “baabcdadabc”, 可以找到的最长的公共子串是"abcd",所以最大公共子串长度为 4。分析学过kmp和bf算法,这题分析和理解不难,两个while循环遍历两个字符串,当匹配上第一字符时,用一个while判断后面还有多少个相同的字符,同时更新length和pos代码d原创 2022-01-16 18:48:51 · 3549 阅读 · 0 评论 -
蓝桥杯刷题-迷宫
蓝桥杯-迷宫DAY ONE写在前面的话:这次报名的是python组,python的语法有些遗忘,通过做题把python的语法捡一捡,同时把这学期学得数据结构运用到实际中做题中题目如下X 星球的一处迷宫游乐场建在某个小山坡上。它是由 10 ×10 相互连通的小房间组成的。房间的地板上写着一个很大的字母。我们假设玩家是面朝上坡的方向站立,则:L 表示走到左边的房间,R 表示走到右边的房间,U 表示走到上坡方向的房间,D 表示走到下坡方向的房间。X 星球的居民有点懒,不愿意费力思考。他们更原创 2022-01-15 14:39:55 · 6634 阅读 · 0 评论 -
数据结构学习
一、绪论TARGET掌握数据结构中涉及的基本概念掌握算法的时间、空间复杂度及其简易分析方法1、复杂现实问题涉及线性表、树、图之类的数据结构2、研究内容::研究非数值计算的程序设 计问题中计算机的操作对象以及它们之间的关系和操作3、基本概念数据:能输入到计算机中去的描述客观事物的符号包括数值型数据和非数值型数据数据元素:数据的基本单位,也称节点或记录数据项:有独立含义的数据最小单位,也称域数据对象:相同特性数据元素的集合,是数据的一个子集数据结构:相互之间存在的一种或多种特定关系的数原创 2022-01-09 15:55:02 · 630 阅读 · 0 评论