pursue wind pursue wind
首页
Java
Python
数据库
框架
Linux
中间件
前端
计算机基础
DevOps
项目
面试
书
关于
归档
MacOS🤣 (opens new window)
GitHub (opens new window)
首页
Java
Python
数据库
框架
Linux
中间件
前端
计算机基础
DevOps
项目
面试
书
关于
归档
MacOS🤣 (opens new window)
GitHub (opens new window)
  • 技术面试题篇

  • 面试准备篇

  • 技术面试题自测篇

  • 练级攻略篇

  • 工作篇

  • 面经篇

  • 笑傲Java面试

    • 2-1 导学-Java编程技巧部分
    • 2-2 IDEA Java配置补充
    • 2-4 Java8 Stream 接口:流和并发计算实例
    • 2-5 和面试官聊聊实现管道和流计算的基石:函数式的Monad
    • 2-6 Buffer的原理和使用场景+面试题解读
    • 2-7 补充提问:同步和阻塞、异步和非阻塞等不等价?
    • 2-8 阿里面试题:中文乱码处理和大文件计算词频
    • 2-9 实战场景Coding训练:解读反射+代理+AOP 并结合业务逻辑实现
    • 2-10 注解部分答案
    • 2-11 反射-元编程面试题目合集
    • 2-12 面试必备:Java8-11的新特性和理解的误区
    • 2-13 白板篇-Java编程总结(以及面试题)
    • 3-1 算法和数据结构导学
    • 3-2 教你面试时不会忘记的5种手写排序
    • 3-3 手写链表算法
    • 3-4 手写栈和队列面试专项
    • 3-5 课后习题+面试题:用栈和队列实现表达式解析
    • 3-6 迷宫伪代码和8皇后问题源代码
      • [](#迷宫的伪代码)迷宫的伪代码
      • [](#八皇后问题源代码)八皇后问题源代码
    • 3-7 3-7 树部分源代码
    • 3-8 8皇后问题
    • 3-10 动态规划的课前题目
    • 3-11 总结和课后习题:白板篇-数据结构和算法
    • 4-1 解读:并发编程知识体系
    • 4-2 看看你的基础:Java线程状态之间如何转换?
    • 4-3 CAS和原子操作
    • 4-4 同步器(上篇)——面试官问synchronized本质是什么?
    • 4-5 同步器(中)——AbstractQueuedSynchronizer
    • 4-6 面试官:说6个Java的同步器?
    • 4-7 面试官出难题:并发环境下单例怎么写性能最高
    • 4-8 面试官:LinkedBlockingDeque和SynchronousQueue工作原理一样吗?
    • 4-9 面试要点:volatile的简短补充
    • 4-10 给面试官讲讲无锁编程(Lock-Free Programming)
    • 4-11 高阶并发编程Coding训练:N种优化哲学家就餐问题的方法
    • 4-12 并发基础篇:总结和思考题
    • 4-13 并发部分的通关Boss: 生成、发放大量红包并控制资金流速
  • LeetCode

  • 面试
  • 笑傲Java面试
pursuewind
2021-12-13
目录

3-6 迷宫伪代码和8皇后问题源代码

# 迷宫伪代码和8皇后问题源代码

讲解见视频

# 迷宫的伪代码

Maze map = ...; // 地图初始化
Position target = ...; // 目标位置

List<Position> findCandidates(Position last, Position current) {
    // 根据当前位置找可能的选择
}

Path find(Position pos, Path path)
{
    if(pos.equals(target)) {
        return path.concat(target);
    }
    
    var candidates = findCandidates(path.last(), pos);
    
    for(var candidate : candidates) {
        //  确保每个状态空间的数据独立
        var newPath = path.clone();
        newPath.add(pos);
        var p = find(pos, newPath);
        if(p != null) {
            return p;
        }
    }
    return null;
}

# 八皇后问题源代码

package datastructure;

import java.util.Arrays;

public class EQueen {

    int[] queens = new int[8];

    public boolean solve(int col) {

        if(col == 8) {
            return true;
        }

        // i : row
        for(int i = 0; i < 8; i++) {
            queens[col] = i;

            boolean flag = true;

            for(int j = 0; j < col; j++) {
                var rowDiff = Math.abs(queens[j] - i);
                var colDiff = col - j;

                if(queens[j] == i || rowDiff == colDiff) {
                    flag = false;
                    break;
                }
            }

            if(flag && solve(col + 1)) {
                return true;
            }

        }
        return false;
    }

    void print(){

        for(int i = 0; i < 8; i++) {

            for(int j = 0; j < 8; j++) {
                if(queens[i] == j) {
                    System.out.print("Q");
                } else {

                    System.out.print(".");
                }

            }
            System.out.print("\n");
        }
    }

    public static void main(String[] argv) {
        var equeen = new EQueen();
        equeen.solve(0);
        equeen.print();

    }

}
Last Updated: 2023/01/30, 11:01:00
3-5 课后习题+面试题:用栈和队列实现表达式解析
3-7 3-7 树部分源代码

← 3-5 课后习题+面试题:用栈和队列实现表达式解析 3-7 3-7 树部分源代码→

Theme by Vdoing | Copyright © 2019-2023 pursue-wind | 粤ICP备2022093130号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
  • 飙升榜
  • 新歌榜
  • 云音乐民谣榜
  • 美国Billboard榜
  • UK排行榜周榜
  • 网络DJ