全排列问题P1706

前言:入驻社区的第127天,我终于要写自己的第一篇文章啦。全排列问题大佬们应该早就驾轻就熟了,可应该也有些初入算法的小蒟蒻(比如我),所以还是想写篇文章分享一下。有问题请大家多多指教,互相分享一下,嘴下留情Oooooo

题目:洛谷P1706

 思路:使用深度优先搜索(DFS)配合回溯算法:

1. 维护一个路径数组记录当前排列

2. 使用标记数组避免重复选择数字

3. 递归终止条件:第n个位置排列完成,递归到n+1时

4. 每次递归选择未被使用的数字,递归后回溯状态

 

举一反三一下,找不到出处了,也是之前看到过的题目

题目大意:从1~n中选取r个数进行全排列,并统计总数

示例,1~4里选2个数进行排列,有如下12种可能

 

 思路是一样的,就是把个数改为r个,直接上代码啦

关键点总结

1. 递归树构建:每个节点代表一个选择步骤

2. 状态标记:通过vis数组避免重复选择

3. 回溯机制:递归返回后必须撤销当前选择

希望通过本篇文章,大家对DFS+回溯在排列组合问题中的应用有了一定了解吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值