数据结构与算法
lonely喆
这个作者很懒,什么都没留下…
展开
-
(递归)四对括号有多少种合法组合
思路: 括号匹配可以直接用栈匹配,这里使用递归,主要递归方式为首先全部左括号,任何对数括号都会有这种形式(((())))由于左括号放在最前面的方式,只有这一种排列,所以需要回退,把第四个左括号先不匹配,那么左括号就会出现在右括号后面,这时候再递归,就会产生几种新的排列((()()))((())())((()))()依次这样进行下去,直到放在最左边的左括号只有1个,这是...原创 2020-04-29 17:09:11 · 1497 阅读 · 1 评论 -
迷宫问题—DFS与BFS区别及联系
以2019蓝桥杯C/C++B组的题目为例,来进行说明DFS和BFS的区别题目描述下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可以通行的地方。010000000100001001110000迷宫的入口为左上角,出口为右下角,在迷宫中,只能从一个位置走到这个它的上、下、左、右四个方向之一。对于上面的迷宫,从入口开始,可以按DRRURRDDDR 的顺序...原创 2020-04-01 18:37:46 · 2354 阅读 · 0 评论 -
回溯法的递归与迭代版本
以2019蓝桥杯C/C++B组的两个题目为例,来进行说明回溯法的递归和迭代版本作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员,组成球队的首发阵容。每位球员担任 1 号位至 5 号位时的评分如下表所示。请你计算首发阵容 1号位至 5 号位的评分之和最大可能是多少? 此处的递归和迭代都是用于遍历全部解空间寻找最优解,所以思路是差不多的,每个人每个位置都尝试一下...原创 2020-03-31 13:13:10 · 836 阅读 · 0 评论 -
回溯法与深度优先搜索(DFS)
一、回溯法与深度优先搜索的关系 回溯搜索是深度优先搜索(DFS)的一种,回溯法通俗的将其采用的思想是“一直向下走,走不通就掉头”,类似于树的先序遍历。dfs和回溯法其主要的区别是:回溯法在求解过程中不保留完整的树结构,而深度优先搜索则记下完整的搜索树。 为了减少存储空间,在深度优先搜索中,用标志的方法记录访问过的状态,这种处理方法使得深度优先搜索法与回溯法没什么区别了。由于回溯法花费时间...原创 2020-03-30 21:17:02 · 14428 阅读 · 5 评论 -
二叉查找树
优点: 可以将链表插入的灵活性和有序数组查找的高效性结合起来。C++实现template <class T>class BSTree { private: BSTNode<T> *mRoot; // 根结点 public: BSTree(); ~BSTree(); // 前序...原创 2020-03-27 21:05:26 · 95 阅读 · 0 评论 -
差分
题目:输入一个长度为n的整数序列。接下来输入m个操作,每个操作包含三个整数l, r, c,表示将序列中[l, r]之间的每个数加上c。请你输出进行完所有操作后的序列。输入格式第一行包含两个整数n和m。第二行包含n个整数,表示整数序列。接下来m行,每行包含三个整数l,r,c,表示一个操作。输出格式共一行,包含n个整数,表示最终序列。思路:由于题目会会插入很多项,如果把每个区间...原创 2020-03-27 20:05:16 · 447 阅读 · 0 评论 -
前缀和
Description已知两个正整数a和b,求在a与b之间(包含a和b)的所有整数的十进制表示中1出现的次数。Input多组数据(不超过100000组),每组数据2个整数a,b.(1≤a,b≤1000000).Output每组数据的答案占一行。Sample Input1 1010 1002 1Sample Output2201Time Limit: 3 Sec ...原创 2020-03-27 17:56:42 · 174 阅读 · 0 评论