每日一题(小白)回溯篇4

深度优先搜索题:找到最长的路径,计算这样的路径有多少条(使用回溯)

分析题意可以得知,每次向前后左右走一步,直至走完16步就算一条走通路径。要求条件是不能超出4*4的范围,不能重复之前的路径。

①控制条件,若下一步已经被占有则返回

②控制条件,若下一步越界则返回

③控制条件,若下一步已到达末尾则返回,并且统计值+1

④若不在上述三个条件中则继续进行下一个点前后左右的试探,进去时需要将标记值设为1,出来后标记值为0

⑤主函数调用,将16个点每个都作为起点,调用回溯函数算出全部统计值

⑥输出统计值

代码如下👇

复制代码
	static int[] dx= {0,1,0,-1};
	static int[] dy= {1,0,-1,0};
	static int[][] arr=new int[4][4];
	static int count=0;
	public static void main(String[] args) {
		
		for (int i = 0; i < 4; i++) {
			for (int j = 0; j < 4; j++) {
			snack(i, j, 0);
			}
		}
		System.out.println(count);
    }
	//玩具蛇
	public static void snack(int x,int y,int len) {
		if (x>=4 || x<0 || y>=4 || y<0) {//先看有没有越界
			return;
		}
		if (arr[x][y]==1) {//下一步已经被占有
			return;
		}
		
		if (len>=15) {//走到结尾
			count ++;
			return;
		}
		for (int i = 0; i < 4; i++) {
				arr[x][y]=1;
				snack(x+dx[i], y+dy[i], len+1);
				arr[x][y]=0;//回溯精精髓
		}
		}

运行结果

相关推荐
湖南天硕国产SSD几秒前
工业存储可靠性进阶:天硕工业固态硬盘动态温控与寿命优化技术实践
网络·数据库·算法·工业存储·天硕存储·工业固态硬盘
legend050709ComeON1 分钟前
常见面试题-leetcode
数据结构·算法·leetcode
惜缘破军5 分钟前
基于 Spring Boot 4 和 Spring Cloud 2025 的微服务基础框架 hdfk7-boot
java
换个昵称都难8 分钟前
WebRTC QoS 实战:从原理到弱网优化
开发语言·php·webrtc
Smilecoc10 分钟前
决策树(一):决策树基本原理
算法·决策树·机器学习
小白起 v11 分钟前
从零搭建一个现代化的验证码登录系统:Spring Boot + 阿里云短信实战教程
java·阿里云
weixin_3077791313 分钟前
从工具到协作者:AI在后端研发中的流程重构与组织赋能
人工智能·后端·python·算法·自动化
爱吃生蚝的于勒16 分钟前
QT开发第三章——常用控件
linux·服务器·开发语言·前端·javascript·c++·qt
未若君雅裁20 分钟前
工厂模式详解:简单工厂、工厂方法与抽象工厂
java·开发语言
沉下去,苦磨练!22 分钟前
深度学习神经网络的搭建
人工智能·算法