每日一题(小白)模拟娱乐篇33

首先,理解题意是十分重要的,我们是要求最短路径,这道题可以用dfs,但是题目给出的数据是有规律的,我们可以尝试模拟的过程使用简单的方法做出来。每隔w数字就会向下转向,就比如题目上示例的w=6,无论从任何一个点出发,到6的倍数就会向下走,走6步继续向下走,我们可以使用两个变量记录,向下走的步数就是两个房子在列上的距离,行之间的距离需要进行处理,因为每两行是不同的,一行正增长,一行负增长,如果向下转向的次数是2的倍数说明又回到了相同的递增/递减规律行上,只需要取x1-x2的绝对值,x1即原坐标所在的行,x2即终点坐标所在的行;如果是转向奇数次,则说明一行正增长,一行负增长,取余之后的值一个是从左数到右,一个是从右数到左,我们直接给第一个数字加上6得到了下一个数字的位置,就变成了偶数行,再取相减的绝对值即可!

①接收数据

②模拟过程,存储转向数据

③判断转向次数,若为偶数直接取行位置相减的绝对值即可

④若不为偶数,给第一个数字+w再取相减的绝对值

⑤输出结果

代码如下👇

复制代码
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int w=scan.nextInt();
		int start=scan.nextInt();
		int end=scan.nextInt();
		int count=0;
		int x1=start%w;//距离行起点相对位置
		int x2=end%w;//距离行起点相对位置
		for (int i = start; i <= end; i++) {
			if (i%w==0) {//转向
				count++;
			}
		}
		//System.out.println(count);测试点
		if (count%2==0) {//两行同方向
			System.out.println(count+Math.abs(x1-x2));
		}else {//两个方向不同
			int x3=Math.abs(end-((count+1)*w-start+1));
			//System.out.println(x3);
			System.out.println(count+x3);
		}
		scan.close();
	}
相关推荐
立志成为大牛的小牛3 小时前
数据结构——四十、折半查找(王道408)
数据结构·学习·程序人生·考研·算法
SimonKing3 小时前
百度统计、Google Analytics平替开源网站分析工具:Umami
java·后端·程序员
Juchecar3 小时前
设计模式不是Java专属,其他语言的使用方法
java·python·设计模式
王哈哈^_^3 小时前
【完整源码+数据集】蓝莓数据集,yolo11蓝莓成熟度检测数据集 3023 张,蓝莓成熟度数据集,目标检测蓝莓识别算法系统实战教程
人工智能·算法·yolo·目标检测·计算机视觉·ai·视觉检测
马克学长3 小时前
SSM基于Java的医疗器械销售系统oy281(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
java·开发语言·用户管理·ssm 框架·医疗器械销售系统
王哈哈^_^3 小时前
【完整源码+数据集】高空作业数据集,yolo高空作业检测数据集 2076 张,人员高空作业数据集,目标检测高空作业识别系统实战教程
人工智能·算法·yolo·目标检测·计算机视觉·目标跟踪·视觉检测
一条数据库3 小时前
猫狗识别数据集:34,441张高质量标注图像,深度学习二分类任务训练数据集,计算机视觉算法研发,CNN模型训练,图像识别分类,机器学习实践项目完整数据资
深度学习·算法·机器学习
Seven973 小时前
MyBatis 常见面试题
java·mybatis
lqj_本人3 小时前
Rust与Go:现代系统编程语言的深度对比
开发语言·golang·rust
bloxd yzh3 小时前
图论基础概念
算法