
算法提高课学习
文章平均质量分 95
头发没了还会再长
你不需要很厉害才开始,但你要开始才能很厉害
展开
-
算法提高课学习——2.搜索——2.2.BFS最短路模型
BFS最短路用BFS来求的最短路,一般都是图的所有边的权值相同,为什么能用BFS来求,因为BFS是一层层的搜索,假设边的权值都是1,那么每搜一次(即入队一层),路径长度加一,所以最先到终点的那条路径一定是最短的,而且因为我们在搜索的时候有标记,所以每个点只会遍历一次,那么遍历结束之后就能知道最短路,所以用BFS可以求任意起点到终点的最短路径。1.迷宫问题题目描述给定一个 n×n 的二维数组,如下所示:int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1,原创 2022-03-31 14:39:04 · 808 阅读 · 0 评论 -
算法提高课学习——2.搜索——2.1.Flood Fill算法
Flood FillFlood Fill算法用于求图中的连通块数量,一般用BFS实现,不过也可以使用DFS来实现,更加简洁,但同时也可能会有爆栈的风险对于图中的任意一个点,我们从该点出发标记它所有的连通块,(就像洪水一样满出去注入到其他格子里)有时候可能是四连通(上下左右),有时候是八连通(上下左右,左上,右上,左下,右下),再从被标记的连通点出发继续遍历图。tips:一般遍历四个方向:int dx[4]={0,-1,0,1},dy[4]={-1,0,1,0};for(int i=0;i原创 2022-03-31 10:57:00 · 647 阅读 · 0 评论 -
算法提高课学习——1.动态规划——1.5区间dp
区间dp1.石子合并题目描述设有 N 堆石子排成一排,其编号为 1,2,3,…,N。每堆石子有一定的质量,可以用一个整数来描述,现在要将这 N 堆石子合并成为一堆。每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同。例如有 4 堆石子分别为 1 3 5 2, 我们可以先合并 1、2 堆,代价为 4,得到 4 5 2, 又合并 1,2 堆,代价为 9,得到 9 2 ,再合并得到 11,总代价为 4+9+原创 2022-03-27 21:34:28 · 821 阅读 · 0 评论 -
算法提高课学习——1.动态规划——1.4状态机模型
状态机模型1.大盗阿福题目描述阿福是一名经验丰富的大盗。趁着月黑风高,阿福打算今晚洗劫一条街上的店铺。这条街上一共有 N 家店铺,每家店中都有一些现金。阿福事先调查得知,只有当他同时洗劫了两家相邻的店铺时,街上的报警系统才会启动,然后警察就会蜂拥而至。作为一向谨慎作案的大盗,阿福不愿意冒着被警察追捕的风险行窃。他想知道,在不惊动警察的情况下,他今晚最多可以得到多少现金?输入格式输入的第一行是一个整数 T,表示一共有 T 组数据。接下来的每组数据,第一行是一个整数 N ,表示一共有 N 家原创 2022-03-18 21:20:50 · 531 阅读 · 2 评论 -
算法提高分类学习刷题——1.动态规划——1.3背包模型
(1)01背包模型题目介绍有 N件物品和一个容量为 V 的背包,每件物品有各自的价值且只能被选择一次,要求在有限的背包容量下,装入的物品总价值最大。「0-1 背包」是较为简单的动态规划问题,也是其余背包问题的基础。动态规划是不断决策求最优解的过程,「0-1 背包」即是不断对第 i个物品的做出决策,「0-1」正好代表不选与选两种决定。二维(1)状态f[i][j]定义:前i个物品,背包容量j下的最优解(最大价值):当前的状态依赖于之前的状态,可以理解为从初始状态f[0][0] = 0开.原创 2022-02-25 22:31:36 · 3582 阅读 · 0 评论 -
算法提高分类学习刷题——1.动态规划——1.2.最长上升子序列模型
最长上升子序列模型1.最长上升子序列题目描述给定一个长度为 N 的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式第一行包含整数 N。第二行包含 N 个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围1≤N≤1000,−109≤数列中的数≤109输入样例:73 1 2 1 8 5 6输出样例:4解题思路因为以i结尾的子序列,一定是由前i-1个数结尾的子序列长度加一取max比如一个子序列a[j]a[i] ,那么当a[j]<a[i原创 2022-02-21 22:05:37 · 1560 阅读 · 0 评论 -
算法提高分类学习刷题——1.动态规划——1.1数字三角模型
数字三角模型1.数字三角形题目描述给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。 7 3 88 1 02 7 4 44 5 2 6 5输入格式第一行包含整数 n,表示数字三角形的层数。接下来 n 行,每行包含若干整数,其中第 i 行表示数字三角形第 i 层包含的整数。输出格式输出一个整数,表示最大的路径数字和。数据范原创 2022-02-18 21:23:29 · 745 阅读 · 0 评论