问题描述 解决方法 1、像第一个问题那就是最短路问题(我代码采用迪杰斯特拉算法)实现 2、换乘次数最少,那就用bfs广搜来寻找答案。但是我的代码不能保证这个最少换乘是最短路程 代码 1 #include<stdio.h> 2 #include<iostream> 3 #include<algorit ...
分类:
其他好文 时间:
2020-01-02 20:17:09
阅读次数:
74
遍历整个grid数组,当发现有1的时候,就把和这个1连成片的1都置为0,并增加一个计数。最后返回这个计数。 广搜,但这个代码通不过测试,栈溢出。 class Solution { public: void bfs(vector<vector<char>>& grid,int i,int j){ if ...
分类:
其他好文 时间:
2019-12-29 22:05:43
阅读次数:
104
一、对回溯算法的理解 应用回溯算法的三个步骤: 1.首先得构造解空间树:子集树和排列树; 2.以深度优先的方式搜索解空间:递归或迭代; 3.设计剪枝函数避免无效搜索:使用约束函数,剪去不满足约束条件的路径或使用限界函数,剪去不能得到最优解的路径。 回溯法解问题的一个显著特征是,解空间树是虚拟的,在任 ...
分类:
编程语言 时间:
2019-12-19 21:00:06
阅读次数:
80
第五章回溯法 作用:当需要找到问题的解集或者要求回答什么解释满足某些约束条件的最佳解时,往往要使用到回溯法 做法:1)回溯法的基本做法是搜索,或是一种组织得井井有条的,能避免不必要搜索的穷举式搜索法。这种方法适用于解一些组合数相当大的问题。 2)回溯法在问题的解空间树种,按深度优先策略,从根节点出发 ...
分类:
其他好文 时间:
2019-12-19 12:40:26
阅读次数:
93
一.对回溯算法的理解 回溯法是一种搜索算法,能搜索一个问题的所有解或者任一解。用回溯法解决问题的步骤如下: 1.确定问题的解空间 2.确定易于搜索的解空间结构 3.以深度优先方式搜索解空间,找到问题的所有解或者任一解,在搜索过程中用用剪枝函数来避免无效搜索。 子集树和排列树是两种解空间树,当问题是从 ...
分类:
其他好文 时间:
2019-12-18 23:36:18
阅读次数:
90
回溯法 一、简介:回溯法有“通用的解题法”之称。用它可以系统的搜索一个问题的所有洁或者任意回溯法是一个几点有系统性又带有跳跃性的搜索算法。它在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。算法搜索值解空间树的任一结点时,先判断该结点是否存在包含问题的解。如果肯定不包含,则跳过对以该结点 ...
分类:
其他好文 时间:
2019-12-17 18:22:26
阅读次数:
64
1 /** 2 * Definition for a binary tree node. 3 * public class TreeNode { 4 * int val; 5 * TreeNode left; 6 * TreeNode right; 7 * TreeNode(int x) { val ...
分类:
其他好文 时间:
2019-12-13 00:11:09
阅读次数:
93
题目大意: 同一个昵称可能不是同一个人,也可能是同一个人,但不同的昵称肯定不是同一个人.按照题意将同一个人的邮箱地址链接起来 并查集: 对对应的邮箱地址进行并查集操作,如果存在有交集的邮箱地址,则两个列表肯定归属于同一个人,将他们连接起来. 1 class Solution { 2 public: ...
分类:
其他好文 时间:
2019-12-12 23:39:06
阅读次数:
95
"??" 其实就是一个广搜能解决的问题,但是!!!不知道为啥, 自己码了个广搜还总是WA12,看不到样例哎呀好气。 这个题其实应该在广搜基础上多想一步,根据题目,最后走出来的路肯定是:城镇 荒野 城镇 荒野,这样子,所以我们也不用判断走的每一步到底是啥,直接算总共多少步,然后ans/2是a,剩下的给 ...
分类:
其他好文 时间:
2019-12-12 01:22:23
阅读次数:
95
以前一直知道深搜是一个递归栈,广搜是队列,FIFO先进先出LILO后进后出啥的。DFS是以深度作为第一关键词,即当碰到岔道口时总是先选择其中的一条岔路前进,而不管其他岔路,直到碰到死胡同时才返回岔道口并选择其他岔路。接下来将介绍的广度优先搜索(Breadth First Search, BFS)则是 ...
分类:
其他好文 时间:
2019-12-11 21:30:37
阅读次数:
109