[第十六届蓝桥杯/java]3.最短距离

🧑‍🎓个人介绍:网络生,现学JAVA、Linux、麒麟操作系统、达梦数据库及各类国产应用

💻博客主页:渡过晚枫渡过晚枫
👓系列专栏:[编程神域 C语言][java/初学者][蓝桥杯]

📖阶段目标:备战2026蓝桥杯java个人赛

 👻不能逃避,不能逃避,不能逃避,去成为更好的自己!👻


一、🍁题目描述:

在一条一维的直线上,存在 n 台显示器和 n 个电源插座。

老师给小蓝布置了一个任务:将每台显示器通过电源线与一个插座相连接(每个插座最多只能给一台显示器供电)。

同时,老师希望所消耗的电源线长度尽可能少。

请计算电源线的最小消耗长度(只需考虑直线距离)。


二、🍁题目分析:

键入显示器和插座的坐标后,可利用sort()方法对其分别进行排序,并使得二者相对应,即相对距离最短的两个为一组,最后计算绝对值距离即可。


三、🍁解题代码:

package lanqiao;
import java.util.Scanner;
import java.util.Arrays;
public class demo1 
{
	public static void main(String [] args)
	{
		
		  Scanner sc = new Scanner(System.in);
		  
	        int n = sc.nextInt();        // 读取 n
	        
	        int[] monitors = new int[n];// 读取 n 个显示器的坐标
	        for (int i = 0; i < n; i++) {
	            monitors[i] = sc.nextInt();
	        }
	       
	        int[] sockets = new int[n]; // 读取 n 个插座的坐标
	        for (int i = 0; i < n; i++) {
	            sockets[i] = sc.nextInt();
	        }
	        
	        Arrays.sort(monitors);//排序,提取最短配对,小对小,大对大
	        Arrays.sort(sockets);

	        long totalDistance = 0;//计算总距离
	        
	        for (int i = 0; i < n; i++) {
	            totalDistance += Math.abs(monitors[i] - sockets[i]); // 计算绝对值距离
	        }
	        
	        System.out.println(totalDistance);//输出
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渡过晚枫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值