回溯(python)

模板:

def dfs(参数):

if(停止条件):

收集答案

退出

for(集合):

处理节点

递归函数

回溯

复制代码
#从1-n里面,找出长度为k=2的所有组合
#  1 2 3 4    长度为2
#  [[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]]
def combine(n,k):
    res=[]
    path=[]
    def dfs(start):
        #递归出口,达到长度k就收集答案
        if len(path)==k:
            res.append(path[:])
            return
        
        #单层递归逻辑
        for i in range(start,n-(k-len(path))+1):  #用start控制数的选取,只能往前选
            path.append(i+1)  #选择该数
            dfs(i+1)  #进入下一层
            path.pop()   #回溯,回到上一层

    dfs(0)
    print(res)
def main():
    n=int(input())
    k=int(input())
    combine(n,k)
if __name__=="__main__":
    main()
相关推荐
weixin_580614002 小时前
golang如何使用sync.WaitGroup_golang sync.WaitGroup并发等待使用方法
jvm·数据库·python
疯狂打码的少年2 小时前
单向循环链表 + 尾指针:让插入删除更高效的秘密武器
数据结构·python·链表
2401_883600252 小时前
如何配置Oracle的外部口令存储_安全外部密码库Wallet自动登录
jvm·数据库·python
2401_897190552 小时前
如何在MongoDB中实现连表查询_group与累计求和操作
jvm·数据库·python
justjinji2 小时前
PHP源码运行是否受硬盘转速影响_7200转vs5400转对比【指南】
jvm·数据库·python
2301_796588502 小时前
如何用 error 事件全局捕获页面图片或脚本加载失败状态
jvm·数据库·python
曲幽2 小时前
FastAPI 生产环境避坑指南:用 Alembic 管理数据库迁移,别再手动改表结构了!
python·fastapi·web·async·sqlalchemy·env·alembic·migration
qq_413847402 小时前
JavaScript中利用Range对象实现复杂的文本选择操作
jvm·数据库·python
qq_654366982 小时前
Vue.js组件通信Emit处理长列表滚动到底部后的数据请求
jvm·数据库·python