数据结构与算法之回溯法

回溯法通用的解题思路

复制代码
void findSolutions(n, other params) :
    if (found a solution) :
        solutionsFound = solutionsFound + 1;
        displaySolution();
        if (solutionsFound >= solutionTarget) : 
            System.exit(0);
        return

    for (val = first to last) :
        if (isValid(val, n)) :
            applyValue(val, n);
            findSolutions(n+1, other params);
            removeValue(val, n);
复制代码

 

如果只是查找是否存在解决方案

复制代码
boolean findSolutions(n, other params) :
    if (found a solution) :
        displaySolution();
        return true;

    for (val = first to last) :
        if (isValid(val, n)) :
            applyValue(val, n);
            if (findSolutions(n+1, other params))
                return true;
            removeValue(val, n);
        return false;
复制代码

 

常见的回溯法算法题目

老鼠走迷宫

 

 给出一条通路,如下:

 

 输入的数据如下:

 

 输出的数据如下:

 

 一个加强版,允许移动多次

 

 

 

 第二行的第一个位置,允许移动3次,所以会移动到这一行最右侧

打印出所有可能的路径

 

posted @   内心澎湃的水晶侠  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
点击右上角即可分享
微信分享提示