当前位置: 首页 > news >正文

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

运行结果

相关文章:

  • ngx_timezone_update
  • Python----计算机视觉处理(Opencv:道路检测之车道线拟合)
  • OpenSceneGraph 中的 osg::Transform详解
  • 图片尺寸修改软件下载
  • 车载ECU底软测试:方法与技术的深度解析
  • 利用NumPy核心知识点优化TensorFlow模型训练过程
  • 大厂机考——各算法与数据结构详解
  • ERP系统五大生产模式概述
  • Python如何将已经安装的包导出为 .whl 文件以便离线使用
  • MySQL Workbench 数据库复制迁移
  • 模运算:数字世界中的时空扭曲法则——从密码学到量子计算的跨维演绎
  • Vue中webpack的使用
  • LeetCode栈 155. 最小栈
  • 第39周:文献阅读
  • 0x22 深度优先搜索0x23剪枝0x24迭代加深meet-in-the-middle
  • 深入解析Java与JavaScript数组的length属性:动态与静态的博弈!!!
  • webpack js 逆向 --- 个人记录
  • Redis介绍及使用
  • SSM民宿管理平台系统
  • MapReduce 的广泛应用:从数据处理到智能决策
  • 新手 网站建设 书籍/最新提升关键词排名软件
  • 小程序有什么用/深圳防疫措施优化
  • c .net怎么做网站/石家庄seo按天扣费
  • 公司做网站好不好/推广平台开户代理
  • 水利建筑工程网站/郑州百度推广代运营
  • 如何建设个人网站和博客/2345导航网址