选择组合数而不是排列数——>重复元素
体现的剪枝要求是让我们对重复元素进行同树层剪枝(在不同路径上),而不是同树枝剪枝(在同一条路径上),可以排序后通过used数组来表示是否存在于同一条路径上,
nums[i]==nums[i-1]&&used[i]==false
used[i]==true表明是在同一条路径,used[i]=false表示是在不同路径
题目链接
运算式这类DFS
一般需要枚举的是两个状态
运算符
和运算数的长度
1、 在做运算式这类的DFS问题时,一般需要枚举的是两个状态运算符
和运算数的长度
,可以每次先枚举长度再枚举符号,即先确定运算数再确定运算符
2、 会出现需要改变运算顺序的问题因为存在运算符优先级,可以记录上一次的运算结果
,一旦出现需要改变运算顺序的,就退回上一步运算结果带来的效益
常用函数
stoll() string转long long
stoi() string转int
to_string()
题目链接
括号匹配这类DFS问题
关键在于
每时每刻要保证左括号数大于等于右括号数
和栈匹配
两个思想
1. 删除等价于选择问题
题目链接
301. 删除无效的括号 //删除等价于选择问题