zoukankan      html  css  js  c++  java
  • 深度优化算法 ( DFS )

    算法框架:

    /**
     * DFS核心伪代码
     * 前置条件是visit数组全部设置成false
     * @param n 当前开始搜索的节点
     * @param d 当前到达的深度
     * @return 是否有解
     */
    bool DFS(Node n, int d){
        if (isEnd(n, d)){//一旦搜索深度到达一个结束状态,就返回true
            return true;
        }
     
        for (Node nextNode in n){//遍历n相邻的节点nextNode
            if (!visit[nextNode]){//
                visit[nextNode] = true;//在下一步搜索中,nextNode不能再次出现
                if (DFS(nextNode, d+1)){//如果搜索出有解
                    //做些其他事情,例如记录结果深度等
                    return true;
                }
     
                //重新设置成false,因为它有可能出现在下一次搜索的别的路径中
                visit[nextNode] = false;
            }
        }
        return false;//本次搜索无解
    }

    实例:24点游戏算法

    #include <stdio.h>
    
    int arr[4];
    int flag[4];
    int dfs(int num)
    {
        if(num == 24){
            return 1;
        }
        
        for(int i=0; i<4; i++){
            if(flag[i] == 0){
                flag[i] = 1;
                if(dfs(num + arr[i])){
                    return 1;
                }else if(dfs(num - arr[i])){
                    return 1;
                }else if(dfs(num * arr[i])){
                    return 1;
                }else if(dfs(num / arr[i]) && num % arr[i] == 0){
                    return 1;
                }
                flag[i] = 0;
            }
        }
        
        return 0;
    }
    int main(void)
    {
    
        
        while(scanf("%d %d %d %d", &arr[0], &arr[1], &arr[2], &arr[3]) != EOF){
            for(int i=0; i<4; i++){
                flag[i] = 0;
            }
            if(dfs(0) == 0){
                printf("false
    ");
            }else{
                printf("true
    ");
            }
        }
        
        
        return 0;
    }
  • 相关阅读:
    linux 查看磁盘空间大小
    Linux上运行Python文件
    linux 删除多个文件
    python3.6安装pycrypto,pycrytodome和crypto(转)
    Fiddler显示服务器IP的方法(转)
    sublime text3支持Vue语法高亮显示步骤(转)
    Python执行select的SQL后的结果
    Python连接MySQL数据库
    Vue工程启动流程
    Python之线程 2
  • 原文地址:https://www.cnblogs.com/god-of-death/p/14777926.html
Copyright © 2011-2022 走看看