草庐IT

【洛谷刷题】蓝桥杯专题突破-广度优先搜索-bfs(13)

目录写在前面:题目:P1443马的遍历-洛谷|计算机科学教育新生态(luogu.com.cn)        题目描述:        输入格式:        输出格式:        输入样例:        输出样例:解题思路:代码:AC!!!!!!!!!!写在最后:写在前面:怎么样才能学好一个算法?我个人认为,系统性的刷题尤为重要,所以,为了学好广度优先搜索,为了用好搜索应对蓝桥杯,事不宜迟,我们即刻开始刷题!题目:P1443马的遍历-洛谷|计算机科学教育新生态(luogu.com.cn)题目描述:输入格式:输入只有一行四个整数,分别为n,m,x,y。输出格式:一个n×m 的矩阵,代表

蓝桥集训之BFS、DFS和链式前向星

配套视频https://www.bilibili.com/video/BV1RD4y1F7Fq一、建图基础前言图一般定义为二元集;由顶点集与边集构成。或者更抽象的说,由一个集合(顶点),和集合上的关系(边)构成图的基本概念名词邻接矩阵邻接表度,出度,入度在有向图中,箭头是具有方向的,从一个顶点指向另一个顶点,这样一来,每个顶点被指向的箭头个数,就是它的入度。从这个顶点指出去的箭头个数,就是它的出度有向边,无向边,重边。环,自环。闭包等有向图和无向图有向图就是边在表示的时候有一个单向性,无向图就是在边表示的时候有一个双向性,这一点在我们建图的时候也能提现到邻接矩阵(稠密图)我们用一个二维矩阵来表

蓝桥集训之BFS、DFS和链式前向星

配套视频https://www.bilibili.com/video/BV1RD4y1F7Fq一、建图基础前言图一般定义为二元集;由顶点集与边集构成。或者更抽象的说,由一个集合(顶点),和集合上的关系(边)构成图的基本概念名词邻接矩阵邻接表度,出度,入度在有向图中,箭头是具有方向的,从一个顶点指向另一个顶点,这样一来,每个顶点被指向的箭头个数,就是它的入度。从这个顶点指出去的箭头个数,就是它的出度有向边,无向边,重边。环,自环。闭包等有向图和无向图有向图就是边在表示的时候有一个单向性,无向图就是在边表示的时候有一个双向性,这一点在我们建图的时候也能提现到邻接矩阵(稠密图)我们用一个二维矩阵来表

蓝桥杯(全球变暖dfs)

蓝桥杯(全球变暖dfs)importjava.util.Scanner;/***该题使用了深度优先算法dfs用于把相连的#号当成一块大陆,并通过数组记录下有几块大陆*dfs算法并不难,只要对用dfs处理过后留下的aes数组和sea数组进行处理得到结果即可*我的思路就是*1、sea数组记录源数据,然后判断是否被淹赋‘*’号记录*2、aes数组使用dfs算法把第一块大陆标记为1,第二块标记为2,以此类推*3、最后假设num块大陆全部被淹,遍历sea数组如果有‘#’号则判断是第几块大陆,没有重复就使num减一*4、最后输出num为最终结果*/publicclasstest1{staticchar[]

蓝桥杯(全球变暖dfs)

蓝桥杯(全球变暖dfs)importjava.util.Scanner;/***该题使用了深度优先算法dfs用于把相连的#号当成一块大陆,并通过数组记录下有几块大陆*dfs算法并不难,只要对用dfs处理过后留下的aes数组和sea数组进行处理得到结果即可*我的思路就是*1、sea数组记录源数据,然后判断是否被淹赋‘*’号记录*2、aes数组使用dfs算法把第一块大陆标记为1,第二块标记为2,以此类推*3、最后假设num块大陆全部被淹,遍历sea数组如果有‘#’号则判断是第几块大陆,没有重复就使num减一*4、最后输出num为最终结果*/publicclasstest1{staticchar[]

深度优先搜索(DFS),看这一篇就够了。

一,定义:深度优先搜索的思路和树的先序遍历很像,下面是百度百科上的定义:深度优先遍历图的方法是,从图中某顶点v出发:(1)访问顶点v;(2)依次从v的未被访问的邻接点出发,对图进深度优先遍历;直至图中和v有路径相通的顶点都被访问;(3)若此时图中尚有顶点未被访问,则从一个未被访问的顶点出发,重新进行深度优先遍历,直到图中所有顶点均被访问过为止。 当然,当人们刚刚掌握深度优先搜索的时候常常用它来走迷宫.事实上我们还有别的方法,那就是广度优先搜索(BFS). 对于定义的理解,可以结合斐波那契数列(虽然用递归来写斐波那契是一种很糟糕的写法)来进行理解,如下图:​其中,右边这个树上的顺序是这样的:​ 

深度优先搜索(DFS),看这一篇就够了。

一,定义:深度优先搜索的思路和树的先序遍历很像,下面是百度百科上的定义:深度优先遍历图的方法是,从图中某顶点v出发:(1)访问顶点v;(2)依次从v的未被访问的邻接点出发,对图进深度优先遍历;直至图中和v有路径相通的顶点都被访问;(3)若此时图中尚有顶点未被访问,则从一个未被访问的顶点出发,重新进行深度优先遍历,直到图中所有顶点均被访问过为止。 当然,当人们刚刚掌握深度优先搜索的时候常常用它来走迷宫.事实上我们还有别的方法,那就是广度优先搜索(BFS). 对于定义的理解,可以结合斐波那契数列(虽然用递归来写斐波那契是一种很糟糕的写法)来进行理解,如下图:​其中,右边这个树上的顺序是这样的:​ 

蓝桥杯——深搜DFS(看完绝对入门DFS)

大家好,我是璐画同学核心代码:关于dfs参数问题,什么在变化,就把什么设置成参数。voiddfs()//参数用来表示状态 {    if(到达终点状态)    {        ...//根据题意添加        return;    }    if(越界或者是不合法状态)        return;    if(特殊状态)//剪枝       return;   for(扩展方式)    {        if(扩展方式所达到状态合法)        {            修改操作;//根据题意来添加            标记;            dfs();         

蓝桥杯——深搜DFS(看完绝对入门DFS)

大家好,我是璐画同学核心代码:关于dfs参数问题,什么在变化,就把什么设置成参数。voiddfs()//参数用来表示状态 {    if(到达终点状态)    {        ...//根据题意添加        return;    }    if(越界或者是不合法状态)        return;    if(特殊状态)//剪枝       return;   for(扩展方式)    {        if(扩展方式所达到状态合法)        {            修改操作;//根据题意来添加            标记;            dfs();         

CCF- CSP 202209-2 何以包邮? 两种方法 dfs+离散化 满分题解

CCF-CSP202209-2何以包邮?两种方法dfs+离散化满分题解题目链接:202209-2何以包邮?思路1(离散化):n最大为30,a最大为104,所以最大价格为3e5将所有组合的价格映射到f上,从x开始向大进行查找,直到找到第一个大于等于x的价格(存在此组合)技巧在于求各种组合的价格,也是采用离散化的思想,将每一个价格和组合映射到f上,每次从M开始遍历整个f,找到加入当前price后,此price和之前的组合形成的新组合所对应的值代码如下:#includeusingnamespacestd;constintN=50,M=3e5+10;//M的范围得大intn,x;intprice[N]