代码随想录冲冲冲 Day24 回溯算法Part4

491. 非递减子序列

这道题有两点

1.去重 

由于数组中存在重复的数字,需要去重,这也是个数层去重

可以使用unordered set的方法。这里不能使用排序后i 和 i-1比较方法

这是为了防止 4 7 6 7 这种的

2.上面情况的解决方法

这面这种情况在4 7结束后由于6小于7 所以就不往后看了

46. 全排列

由于是全排列,所以停止条件就是当长度跟数组相同时就返回,这个时候才会收结果

用use[i] = true去避免当前重复被选择, 比如1 ,2 ,3结果选出来112这种的。

47. 全排列 II

这个比起上面的区别是 这道题会有重复的数 但是得到的排列不能一样 有重复的数就要数层去重

再加上之前的避免自己被选到 

332. 重新安排行程

1.要有这么一个map去记录出发的机场 到达机场 和 到达机场的次数

当次数大于0时候是说明 到达的机场还可以往外飞 等于0的时候就代表结束了 这样可以避免循环情况

2.返回条件是当result中地点个数比飞的数量多一,这说明所有飞机都飞过了

之后就是去递归的同时修改地点飞的次数 如果大于0就继续 知道不会往外飞为止

51. N 皇后

N皇后问题

根本思想是一行一行的去递归 

1.需要一个判断的函数, 让加上之后横纵向上45度和向上135度都没有皇后,不看向下的是因为

一行一行去添加,下面还没加到不用管。

2.之后用forloop col 用递归去看row

 

37. 解数独

1.首先也要有一个去判断是否valid的函数

2.确认行和列然后去看当前数符不符合 如果符合就继续全看下一个行列

当全部填完之后 直接返回上来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值