
回溯
csu_xiji
这个作者很懒,什么都没留下…
展开
-
力扣 282. 给表达式添加运算符 dfs 回溯
https://leetcode-cn.com/problems/expression-add-operators/思路:很明显的回溯了吧。。考虑每个位置的运算符种类有三种以及数字可以连起来,那么相当于每个位置有四种选择,直接暴力计算时间复杂度为O(4n)O(4^{n})O(4n),考虑nnn最大不过等于10,还是可以通过滴~需要注意的一个细节问题是,如果以位置iii为一个数的起始,且其为0,那么后续就不能再跟其他数字了!class Solution {public: vector<s原创 2021-10-17 00:45:14 · 192 阅读 · 0 评论 -
力扣 797. 所有可能的路径 dfs 回溯
https://leetcode-cn.com/problems/all-paths-from-source-to-target/思路:dfsdfsdfs回溯即可,感觉没什么好说的。因为是有向无环图,所以在一次dfsdfsdfs过程中不可能访问到已经访问过的节点,不需要引入额外的标记数组。class Solution {public: vector<vector<int>> allPathsSourceTarget(vector<vector<int>原创 2021-08-27 01:28:39 · 229 阅读 · 0 评论 -
力扣 526. 优美的排列 回溯 状压dp
https://leetcode-cn.com/problems/beautiful-arrangement/思路一:还就内个暴力回溯。究极暴力的解法,枚举所有可能性,加上最简单的剪枝即可。class Solution {public: int countArrangement(int n) { vector<bool> vis(n+1); int ans=0; function<void(int)> dfs=[&原创 2021-08-17 01:31:27 · 265 阅读 · 0 评论 -
力扣 1239. 串联字符串的最大长度 dfs 回溯 位运算
https://leetcode-cn.com/problems/maximum-length-of-a-concatenated-string-with-unique-characters/思路:dfs+回溯是比较容易看出来的。关键点在于重复字符的判断,如果每次都暴力遍历字符串计数的话,复杂度就太高了,我们可以使用二进制的思想,把一个字符串所含有的字符表示为一个二进制数,那么判断两个字符串是否有重复字符就很简单了,只需要把两个二进制数相与,看结果是否为0即可。class Solution {pub原创 2021-06-25 22:43:46 · 183 阅读 · 0 评论 -
力扣 90. 子集 II 位运算 回溯
https://leetcode-cn.com/problems/subsets-ii/思路:有重复元素,所以枚举的时候要注意了。我们先对nums从小到大排序,假设当前选择了第x个元素,如果我们没有选择第x-1个元素但是这两个元素的值相等,那么一定会有重复的子集,直接跳过这种情况就行了。class Solution {public: vector<vector<int>> subsetsWithDup(vector<int>& nums) {原创 2021-03-31 22:34:35 · 152 阅读 · 0 评论 -
力扣 78. 子集 位运算 回溯
https://leetcode-cn.com/problems/subsets/思路:因为nums中没有重复元素,所以通过位运算直接枚举即可,当然回溯法也可以。class Solution {public: vector<vector<int>> subsets(vector<int>& nums) { int n=nums.size(),times=1<<n; vector<vector<原创 2021-03-31 22:29:23 · 160 阅读 · 0 评论 -
力扣 131. 分割回文串 dp 回溯
https://leetcode-cn.com/problems/palindrome-partitioning/思路:先dpdpdp进行预处理,如果s[i…j]s[i…j]s[i…j]是回文串就令dp[i][j]=1dp[i][j]=1dp[i][j]=1,详情看这篇博客。然后很显然就是搜索了吧……回溯法感觉也没多少好讲的……class Solution {public: void dfs(vector<vector<string>> &ans,vecto原创 2021-03-08 01:15:40 · 135 阅读 · 0 评论 -
力扣 面试题38. 字符串的排列 dfs+回溯
https://leetcode-cn.com/problems/zi-fu-chuan-de-pai-lie-lcof/思路:dfsdfsdfs+回溯,注意判重即可。自己实现的究极暴力版本:class Solution {public: bool vis[8]={0}; int pos[8]={0}; vector<string> ans; ...原创 2020-04-23 16:35:05 · 244 阅读 · 0 评论 -
洛谷 P1378 油滴扩展 搜索+回溯
https://www.luogu.org/problem/P1378题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界。必须等一个油滴扩展完毕才能放置下一个油滴。那么应该按照怎样的顺序在这N个点上放置油滴,才能使放置完毕后所有油滴占据的总体积最大呢?(不同的油滴不会相互融合)注:圆的面积...原创 2019-10-01 23:02:26 · 298 阅读 · 0 评论 -
HDU 5937 Equation 搜索+剪枝
http://acm.hdu.edu.cn/showproblem.php?pid=5937题目大意:给出1−91-91−9每个数字的个数,问最多能组成多少个不同的形如a+b=ca+b=ca+b=c的式子。(1+2=32+1=31+4=51+2=3 2+1=3 1+4=51+2=32+1=31+4=5这些都视为不同情况)思路:真的爆搜就过了,只需要一个特别简单的剪枝。通过枚举发现最多只有363...原创 2019-09-25 16:56:08 · 143 阅读 · 0 评论 -
POJ 1011 Sticks 搜索+剪枝
http://poj.org/problem?id=1011题目大意:给出nnn根木棍的长度,你可以把他们拼成任意根长度均为lenlenlen的新木棍,问这个lenlenlen最小可能是多少。思路:设MAX=aiMAX=a_{i}MAX=ai,sum=∑i=1naisum=\sum_{i=1}^{n}a_{i}sum=∑i=1nai,那么从MAXMAXMAX枚举到sum/2sum/2su...原创 2019-09-25 14:29:29 · 131 阅读 · 0 评论 -
POJ 1321 棋盘问题 回溯
http://poj.org/problem?id=1321在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。Input输入含有多组测试数据。每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以...原创 2019-07-27 09:00:04 · 184 阅读 · 0 评论 -
CSU 2172 回溯
http://acm.csu.edu.cn:20080/csuoj/problemset/problem?pid=2172DescriptionICPCCamp 有 n 个商店,用 1, 2, …, n 编号。对于任意 i > 1,有从商店 pi 到 i 的单向道路。 同时,商店 i 出售类型为 ai 的商品。Bobo 从商店 1 出发前往商店 i。他要在两个不同的商店购买商品(...原创 2019-05-29 17:03:14 · 246 阅读 · 0 评论 -
团体程序设计天梯赛 球队食物链 dfs+剪枝
https://pintia.cn/problem-sets/994805046380707840/problems/994805048175869952L3-015 球队“食物链” (30 分)某国的足球联赛中有NNN支参赛球队,编号从1至NNN。联赛采用主客场双循环赛制,参赛球队两两之间在双方主场各赛一场。联赛战罢,结果已经尘埃落定。此时,联赛主席突发奇想,希望从中找出一条包含所有...原创 2019-03-11 22:56:51 · 219 阅读 · 0 评论 -
ZOJ 1004 dfs+回溯
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4How can anagrams result from sequences of stack operations? There are two sequences of stack operators which can convert TROT to TORT:[...原创 2019-03-03 18:15:06 · 219 阅读 · 0 评论 -
洛谷 P1019 dfs回溯
https://www.luogu.org/problemnew/show/P1019题目描述单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如 beast和astonish,如果接成一条龙则变为beastonish,另外相邻的两部...原创 2019-02-11 14:57:25 · 374 阅读 · 0 评论 -
洛谷 P1219 dfs回溯
https://www.luogu.org/problemnew/show/P1219题目描述检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。上面的布局可以用序列2 4 6 1 3 5来描述,第i个数字表示在第i行的相应位置有一个棋子,如下:行号 1 2 3 4 5 6列号...原创 2019-02-11 14:26:49 · 259 阅读 · 0 评论 -
HDU 2553 N皇后 回溯
http://acm.hdu.edu.cn/showproblem.php?pid=2553在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。你的任务是,对于给定的N,求出有多少种合法的放置方法。 Input共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。Outp...原创 2019-01-23 17:24:51 · 116 阅读 · 0 评论