2024年Web前端最新剑指Offer——回溯算法解迷宫问题(java版)_迷宫回溯算法java,真牛皮

前端框架

前端框架太多了,真的学不动了,别慌,其实对于前端的三大马车,Angular、React、Vue 只要把其中一种框架学明白,底层原理实现,其他两个学起来不会很吃力,这也取决于你以后就职的公司要求你会哪一个框架了,当然,会的越多越好,但是往往每个人的时间是有限的,对于自学的学生,或者即将面试找工作的人,当然要选择一门框架深挖原理。

以 Vue 为例,我整理了如下的面试题。

Vue部分截图

如果你觉得对你有帮助,可以戳这里获取:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

1 1 0 0 0 0 0 0(出口)

该图是一个迷宫的图。1代表是墙不能走,0是可以走的路线。只能往上下左右走,直到从左上角到右下角出口。

做法是用一个二维数组来定义迷宫的初始状态,然后从左上角开始,不停的去试探所有可行的路线,碰到1就结束本次路径,然后探索其他的方向,当然我们要标记一下已经走的路线,不能反复的在两个可行的格子之间来回走。直到走到出口为止,算找到了一个正确路径。

程序如下,具体做法看注释即可。

package cn.edu.ujn.demo;

/\*\* 
 \* @author SHQ
 \* 
 \* 迷宫问题求解
 \* 
 \* 思路
 \* 递归+回溯
 \* 
 \* 按照右-->左-->下-->上的顺序寻路,已走过的路径用5标志
 \* 
 \* 
 \*/  
public class MiGong {  
  
    public static void main(String[] args) {  
		int maxRow,maxLine,p;
        Scanner in = new Scanner(System.in);
        Pattern pattern = Pattern.compile("[ ]+");
        String s = in.nextLine();
        String [] str = pattern.split(s);
        // 获取行
        maxRow = Integer.parseInt(str[0]);
        // 获取列
        maxLine = Integer.parseInt(str[1]);
        // 获取能量值
// p = Integer.parseInt(str[2]);
        
        int [][] array = new int [maxRow][maxLine];
        for(int i = 0; i < maxRow; i++){
            for(int j = 0; j < maxLine; j++){
            	array[i][j] = in.nextInt();
            }
        }
    	
        Long start = System.currentTimeMillis();  
        new MiGong().check(0, 0, array, maxRow, maxLine);
        Long end = System.currentTimeMillis();  
        System.out.println("耗时:" + (end-start) + "ms");
    }  
     /\*\*
 \* 制定走的规则
 \* @param i
 \* @param j
 \* @param array
 \* @param maxRow
 \* @param maxLine
 \*/
    private void check(int i, int j, int[][] array, int maxRow, int maxLine) 	{
        // 递归出口(如果到达右下角出口) 
        if (i == maxRow - 1 && j == maxLine - 1) {  
            print(array, maxRow, maxLine);
            return;  
        }  
  
        //向右走 
        if (canMove(i, j, i, j + 1, array, maxRow, maxLine)) {
        	// 已走过的点置标志位5
            array[i][j] = 5;  
            // 从下一个点继续寻路
            check(i, j + 1, array, maxRow, maxLine);
            // 均不可行,则恢复现场
            array[i][j] = 0;  
        }  
        //向左走 
        if (canMove(i, j, i, j - 1, array, maxRow, maxLine)) {
        	// 标记为已走
            array[i][j] = 5;
            // 递归调用
            check(i, j - 1, array, maxRow, maxLine);
            array[i][j] = 0;  
        }  
        //向下走 
        if (canMove(i, j, i + 1, j, array, maxRow, maxLine)) {  
            array[i][j] = 5;  
            check(i + 1, j, array, maxRow, maxLine);  
            array[i][j] = 0;  
        }  
        //向上走 
        if (canMove(i, j, i - 1, j, array, maxRow, maxLine)) {  
            array[i][j] = 5;  
            check(i - 1, j, array,maxRow, maxLine);  
            array[i][j] = 0;  
        }  
 }   
    /\*\*
 \* 判断[i,j]-->[targetI,targetJ]是否可行
 \* @param i
 \* @param j
 \* @param targetI


### 文末

逆水行舟不进则退,所以大家要有危机意识。

同样是干到35岁,普通人写业务代码划水,榜样们深度学习拓宽视野晋升管理。



这也是为什么大家都说35岁是程序员的门槛,很多人迈不过去,其实各行各业都是这样都会有个坎,公司永远都缺的高级人才,只用这样才能在大风大浪过后,依然闪耀不被公司淘汰不被社会淘汰。

为了帮助大家更好温习重点知识、更高效的准备面试,特别整理了《前端工程师核心知识笔记》电子稿文件。

内容包括html,css,JavaScript,ES6,计算机网络,浏览器,工程化,模块化,Node.js,框架,数据结构,性能优化,项目等等。



**269页《前端大厂面试宝典》**

包含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中级前端技术点。

**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/topics/618166371)**

![](https://img-blog.csdnimg.cn/img_convert/b98713ee557d94286de8afe404cb51d1.png)

**前端面试题汇总**

![](https://img-blog.csdnimg.cn/img_convert/1d691ca297c9016828aff783a701e065.png)

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值