蓝桥杯(全球变暖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)importjava.util.Scanner;/***该题使用了深度优先算法dfs用于把相连的#号当成一块大陆,并通过数组记录下有几块大陆*dfs算法并不难,只要对用dfs处理过后留下的aes数组和sea数组进行处理得到结果即可*我的思路就是*1、sea数组记录源数据,然后判断是否被淹赋‘*’号记录*2、aes数组使用dfs算法把第一块大陆标记为1,第二块标记为2,以此类推*3、最后假设num块大陆全部被淹,遍历sea数组如果有‘#’号则判断是第几块大陆,没有重复就使num减一*4、最后输出num为最终结果*/publicclasstest1{staticchar[]
一,定义:深度优先搜索的思路和树的先序遍历很像,下面是百度百科上的定义:深度优先遍历图的方法是,从图中某顶点v出发:(1)访问顶点v;(2)依次从v的未被访问的邻接点出发,对图进深度优先遍历;直至图中和v有路径相通的顶点都被访问;(3)若此时图中尚有顶点未被访问,则从一个未被访问的顶点出发,重新进行深度优先遍历,直到图中所有顶点均被访问过为止。 当然,当人们刚刚掌握深度优先搜索的时候常常用它来走迷宫.事实上我们还有别的方法,那就是广度优先搜索(BFS). 对于定义的理解,可以结合斐波那契数列(虽然用递归来写斐波那契是一种很糟糕的写法)来进行理解,如下图:其中,右边这个树上的顺序是这样的:
一,定义:深度优先搜索的思路和树的先序遍历很像,下面是百度百科上的定义:深度优先遍历图的方法是,从图中某顶点v出发:(1)访问顶点v;(2)依次从v的未被访问的邻接点出发,对图进深度优先遍历;直至图中和v有路径相通的顶点都被访问;(3)若此时图中尚有顶点未被访问,则从一个未被访问的顶点出发,重新进行深度优先遍历,直到图中所有顶点均被访问过为止。 当然,当人们刚刚掌握深度优先搜索的时候常常用它来走迷宫.事实上我们还有别的方法,那就是广度优先搜索(BFS). 对于定义的理解,可以结合斐波那契数列(虽然用递归来写斐波那契是一种很糟糕的写法)来进行理解,如下图:其中,右边这个树上的顺序是这样的:
大家好,我是璐画同学核心代码:关于dfs参数问题,什么在变化,就把什么设置成参数。voiddfs()//参数用来表示状态 { if(到达终点状态) { ...//根据题意添加 return; } if(越界或者是不合法状态) return; if(特殊状态)//剪枝 return; for(扩展方式) { if(扩展方式所达到状态合法) { 修改操作;//根据题意来添加 标记; dfs();
大家好,我是璐画同学核心代码:关于dfs参数问题,什么在变化,就把什么设置成参数。voiddfs()//参数用来表示状态 { if(到达终点状态) { ...//根据题意添加 return; } if(越界或者是不合法状态) return; if(特殊状态)//剪枝 return; for(扩展方式) { if(扩展方式所达到状态合法) { 修改操作;//根据题意来添加 标记; 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]
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]
📚博客主页:⭐️这是一只小逸白的博客鸭~⭐️👉欢迎关注❤️点赞👍收藏⭐️评论📝😜小逸白正在备战实习,经常更新面试题和LeetCode题解,欢迎志同道合的朋友互相交流~💙若有问题请指正,记得关注哦,感谢~往期文章:LeetCode剑指OfferII链表专题总结LeetCode剑指OfferII哈希表专题总结LeetCode剑指OfferII栈专题总结LeetCode剑指OfferII队列专题总结LeetCode剑指OfferII树(上)专题总结LeetCode剑指OfferII树(下)专题总结LeetCode剑指OfferII堆专题总结LeetCode剑指OfferII前缀树(上)专题总结Lee
📚博客主页:⭐️这是一只小逸白的博客鸭~⭐️👉欢迎关注❤️点赞👍收藏⭐️评论📝😜小逸白正在备战实习,经常更新面试题和LeetCode题解,欢迎志同道合的朋友互相交流~💙若有问题请指正,记得关注哦,感谢~往期文章:LeetCode剑指OfferII链表专题总结LeetCode剑指OfferII哈希表专题总结LeetCode剑指OfferII栈专题总结LeetCode剑指OfferII队列专题总结LeetCode剑指OfferII树(上)专题总结LeetCode剑指OfferII树(下)专题总结LeetCode剑指OfferII堆专题总结LeetCode剑指OfferII前缀树(上)专题总结Lee