草庐IT

跳跃游戏 (贪心/动态规划/dfs)

1.跳跃游戏简单介绍    跳跃游戏是一种典型的算法题目,经常是给定一数组arr[],从数组的某一位置i出发,根据一定的跳跃规则,比如从i位置能跳arr[i]步,或者小于arr[i]步,或者固定步数,直到到达某一位置,可能是数组的最后一个位置,也有可能是某一特别的数值处。          对于跳跃游戏类的题目,经常使用贪心、动态规划、dfs、bfs等方法解决,对于可以使用贪心解决的题目,经常也可以使用动态规划,但一般贪心可以有更好的时间复杂度和空间复杂度。2.跳跃游戏相关专题1.leetcode55跳跃游戏给定一个非负整数数组nums,你最初位于数组的第一个下标。数组中的每个元素代表你在该位

蓝桥杯算法心得——仙界诅咒(dfs)

大家好,我是晴天学长,搜索型的dfs,差点开二维矩阵了,仔细一想,没那么夸张啊,哈哈哈,需要的小伙伴可以关注支持一下哦!后续会继续更新的。💪💪💪1).仙界诅咒仙境诅咒问题描述在一片神秘的仙境中,有N位修仙者,他们各自在仙境中独立修炼,拥有自己独特的修炼之道和修炼之地,修仙者们彼此之间相互尊重、和谐相处。然而,有一天,仙境的主宰者妮妮(第一位修仙者)受到了诅咒,该诅咒会向距离妮妮不超过D的范围内的修仙者传播。也就是说,如果一个修仙者被诅咒,那么在距离他不超过D的范围内的所有修仙者都会被诅咒。现在,你需要预测哪些修仙者最终会被诅咒,以便及时采取措施,保护仙境的和平与安宁。输入格式第—行输入一个正整

Codeforces Round 911 (Div. 2)(C~E)(DFS、数论(容斥)、SCC缩点 + DAG图上DP)

​​​​​​1900C-Anji'sBinaryTree        题意:凯克西奇一直被安吉冷落。通过一个共同的朋友,他发现安吉非常喜欢二叉树,于是决定解决她的问题,以引起她的注意。Anji给了Keksic一棵有n个顶点的二叉树。顶点1是根,没有父顶点。所有其他顶点都有一个父顶点。每个顶点最多可以有2个子顶点、一个左子顶点和一个右子顶点。对于每个顶点,安吉都会告诉凯西奇它的左子和右子的索引,或者告诉他它们不存在。此外,每个顶点上都有一个字母,即"U"、"L"或"R"。克克西奇从根开始下棋,他的每一步都是这样走的:如果当前顶点上的字母是"U",他就移动到它的父顶点。如果它不存在,他就什么也不

图论--用DFS计算pre和post

描述给出一个 n 个顶点的有向图,顶点编号从 1∼n。从 1 号顶点出发,求该图每个顶点的pre值和post值。温馨提示:时钟从 1 开始。输入描述第一行给出这个图的顶点数 n (1≤n≤1000)第二行给出这个有向图的边数 e (0≤e≤100000)第三行开始,共 e 行,每行两个正整数 a b,表示从顶点 a 发出一条弧到顶点 b 。输出描述两行,第一行:1 号顶点的pre值,2 号顶点的pre值,…,n 号顶点的pre值。每个值后面跟一个空格。第二行:1 号顶点的post值,2 号顶点的post值,…,n 号顶点的post值。每个值后面跟一个空格。一道简单的oj题,话不多说,上代码#i

数据结构图 算法6.1-6.2创建无向网 算法6.4-6.6DFS

一个不知名大学生,江湖人称菜狗originalauthor:jackyLiEmail:3435673055@qq.comTimeofcompletion:2022.12.6Lastedited:2022.12.6算法6.1-6.2创建无向网第1关:算法6.1邻接矩阵任务描述本关任务:编写一个能输出无向图邻接矩阵的小程序。相关知识为了完成本关任务,你需要掌握:1.创建邻接矩阵编程要求根据提示,在右侧编辑器补充代码,输出邻接矩阵。输入说明第一行是顶点数目n和边数目e,中间以空格分开第二行是n个字符型的顶点数目名称,中间以空格分开接下来e行分别是对应的边比如说AB400表示顶点A和B之间有边,权值为

如何在LLVM生成的呼叫图上进行DFS

我想在LLVM生成的呼叫图上进行DFS(深度第一次搜索)遍历遍历,即我使用以下代码,但要坚持如何进一步进行?boolrunOnModule(Module&M)override{CallGraphcg=CallGraph(M);cg.dump();CallGraph::iteratorbeg=cg.begin();CallGraph::iteratorend=cg.end();returnfalse;}以上代码仅倾倒呼叫图。但是我想从主要方法开始对其进行DFS遍历。我正在使用叮当声作为前端。怎么做?看答案一旦您学习使用LLVM图迭代器,深度第一遍历非常简单:#includeboolrunOnMo

深度优先搜索(DFS)和广度优先搜索(BFS)两种算法c++

1、BFS和DFS介绍深度优先搜索(DFS)和广度优先搜索(BFS)是一种用于遍历或搜索树图的一种算法,在这个过程中保证图或数的每个结点被访问且仅被访问一次,再按照每个结点访问的顺序不同分为深搜和广搜。本文只讨论这两种算法在搜索方面的应用!1.1深度优先搜索算法深度优先搜索(Depth-First-Search,DFS)它沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问

【数据结构】图的遍历:广度优先(BFS),深度优先(DFS)

目录1、广度优先(BFS)算法思想 广度优先生成树 知识树 代码实现 2、深度优先(DFS)算法思想 深度优先生成树知识树 代码实现 1、广度优先(BFS)算法思想          图的广度优先遍历(BFS)是一种遍历图的算法,其思想是从起始顶点开始遍历图,先访问起始顶点的所有直接邻居,然后遍历这些邻居的直接邻居,以此类推,直到遍历完整个图。BFS算法需要使用一个队列来保存已经遍历过但还未访问其邻接顶点。具体步骤如下:将起始顶点加入队列中,并标记为已访问。从队列中取出一个顶点V,并依次访问V的所有未被访问的邻接顶点,并将这些邻接顶点加入队列中,并标记为已访问。重复步骤2,直到队列为空。广度优

华为OD机试 - 机器人走迷宫 - 深度优先搜索dfs(Java 2023 B卷 200分)

目录专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、深度优先搜索dfs六、Java算法源码七、效果展示1、输入2、输出3、说明华为OD机试2023B卷题库疯狂收录中,刷题点这里专栏导读本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷&

C++深度优先(DFS)算法的应用:收集所有金币可获得的最大积分

涉及知识点深度优化(DFS)记忆化题目节点0处现有一棵由n个节点组成的无向树,节点编号从0到n-1。给你一个长度为n-1的二维整数数组edges,其中edges[i]=[ai,bi]表示在树上的节点ai和bi之间存在一条边。另给你一个下标从0开始、长度为n的数组coins和一个整数k,其中coins[i]表示节点i处的金币数量。从根节点开始,你必须收集所有金币。要想收集节点上的金币,必须先收集该节点的祖先节点上的金币。节点i上的金币可以用下述方法之一进行收集:收集所有金币,得到共计coins[i]-k点积分。如果coins[i]-k是负数,你将会失去abs(coins[i]-k)点积分。收集所