目录

每日一题(小白)回溯篇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;//回溯精精髓
		}
		}

运行结果

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
体育分享_大眼1 小时前
从零搭建高并发体育直播网站:架构设计、核心技术与性能优化实战
java·性能优化·系统架构
水w2 小时前
【Python爬虫】简单案例介绍1
开发语言·爬虫·python
琢磨先生David2 小时前
Java 在人工智能领域的突围:从企业级架构到边缘计算的技术革新
java·人工智能·架构
Ludicrouers2 小时前
【Leetcode-Hot100】和为k的子数组
算法·leetcode·职场和发展
巨可爱熊2 小时前
高并发内存池(定长内存池基础)
linux·运维·服务器·c++·算法
计算机学姐2 小时前
基于SpringBoo的地方美食分享网站
java·vue.js·mysql·tomcat·mybatis·springboot·美食
qq_365911604 小时前
GPT-4、Grok 3与Gemini 2.0 Pro:三大AI模型的语气、风格与能力深度对比
开发语言
爱数模的小驴4 小时前
2025 年“认证杯”数学中国数学建模网络挑战赛 C题 化工厂生产流程的预测和控制
深度学习·算法·计算机视觉
Hanson Huang5 小时前
【数据结构】堆排序详细图解
java·数据结构·排序算法·堆排序
Susea&5 小时前
数据结构初阶:队列
c语言·开发语言·数据结构