物流中转站---最短距离和
最短距离和(暴力求解)
题目描述
Shopee物流会有很多个中转站。在选址的过程中,会选择离用户最近的地方建一个物流中转站。
假设给你一个二维平面网格,每个格子是房子则为1,或者是空地则为0。找到一个空地修建一个物流中转站,使得这个物流中转站到所有的房子的距离之和最小。 能修建,则返回最小的距离和。如果无法修建,则返回 -1。
若范围限制在100*100以内的网格,如何计算出最小的距离和?
当平面网格非常大的情况下,如何避免不必要的计算?
输入描述
4
0 1 1 0
1 1 0 1
0 0 1 0
0 0 0 0
先输入方阵阶数,然后逐行输入房子和空地的数据,以空格分隔。
输出描述
8
能修建,则返回最小的距离和。如果无法修建,则返回 -1。
示例一
输入:
4
0 1 1 0
1 1 0 1
0 0 1 0
0 0 0 0
输出:
8
示例二
输入:
4
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
输出:
-1
思路解析
该题可以用暴力求解的方式进行解答。通过遍历,如果方阵全为1则最短路径和为-1,否则遍历找出每一个为0的坐标,并对它到每个为1 结点的距离求和。借助一个辅助数组b,将每个计算出的距离和保存到数组中,然后查询最大值。
代码示例
import java.util.Scanner;
public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner in=new Scanner(System.in);//输入方阵阶数int n = in.nextInt();int a[][] = new int[n][n];//用于记录矩阵中1的个数int count=0;//输入方阵for(int i=0; i<n; i++){for(int j=0; j<n; j++){a[i][j] = in.nextInt();if(a[i][j]==1) {count++;}}}//定义一个辅助数组,用于记录中转站到各个房屋的最短距离int b[]=new int[n*n];//计算出最小距离和int c=0;for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {if (a[i][j]==0) {//x1,y1分别为该中转站的坐标,sum为最短距离和int x1=i;int y1=j;int sum=0;for (int m = 0; m < n; m++) {for (int k = 0; k < n; k++) {if (a[m][k]!=0) {//x2、y2为该房屋的坐标int x2=m;int y2=k;sum+=Math.abs(x1-x2)+Math.abs(y1-y2);}}}b[c]=sum;c++;}}}//result为最短路径和int result=b[0];//先判断是否都为1if (count==n*n) {result=-1;}else {for (int i = 0; i < b.length; i++) {if ((b[i]<result)&&b[i]!=0) {result=b[i];}}}System.out.println(result);}
}
物流中转站---最短距离和相关推荐
- 牛客 OR175.物流中转站 --->超详细解答
题目描述 题目描述 Shopee物流会有很多个中转站.在选址的过程中,会选择离用户最近的地方建一个物流中转站. 假设给你一个二维平面网格,每个格子是房子则为1,或者是空地则为0.找到一个空地修建一个物 ...
- [牛客/校招编程真题][C++]建物流中转站
建物流中转站 题目描述 Shopee物流会有很多个中转站.在选址的过程中,会选择离用户最近的地方建一个物流中转站. 假设给你一个二维平面网格,每个格子是房子则为1,或者是空地则为0.找到一个空地修建一 ...
- 暴力--建物流中转站
链接:https://www.nowcoder.com/questionTerminal/c82efaf9e2cc42cda0a8ad795845eceb?orderByHotValue=1& ...
- 暴力求解之中转站问题
题目描述: Shopee物流会有很多个中转站.在选址的过程中,会选择离用户最近的地方建一个物流中转站.假设给你一个二维平面网格,每个格子是房子则为1,或者是空地则为0.找到一个空地修建一个物流中转站 ...
- 每天一道算法题-暴力求解建物流中间站
Shopee物流会有很多个中转站.在选址的过程中,会选择离用户最近的地方建一个物流中转站. 假设给你一个二维平面网格,每个格子是房子则为1,或者是空地则为0.找到一个空地修建一个物流中转站,使得这个物 ...
- 最短路径-图-----练习力扣787. K 站中转内最便宜的航班
首先还是搞定三种最短路径的算法. 参考:https://www.cnblogs.com/Halburt/p/10756572.html https://www.cnblogs.com/tahitian ...
- 一份自己整理的不太详细的常见面试题
1.java基础 1.解释下什么是面向对象?面向对象和面向过程的区别? 面向对象是一种基于面向过程的编程思想,是面向现实世界模型的自然延申,这是一种"万物皆对象"的编程思想.由 ...
- 手写简易版Vue源码之数据响应化的实现
当前,Vue和React已成为两大炙手可热的前端框架,这两个框架都算是业内一些最佳实践的集合体.其中,Vue最大的亮点和特色就是数据响应化,而React的特点则是单向数据流与jsx. 笔者近期正在研究 ...
- 跨境电商平台主要有哪些
随着跨境电商的不断发展,跨境行业也日渐饱和,其中竞争力最大的就是亚马逊行业了,作为全球第一大电商,亚马逊在全球多个国家和地区开设了亚马逊站点,并且每天都有大量的用户访问亚马逊网站消费购物,这也就是为什 ...
最新文章
- linq where 数组_C#中LINQ与数据管道
- 只有汇编能告诉你为什么
- Crystal Report 2008
- Asp.net MVC 3实例学习之ExtShop(六)——登录对话框
- 所有科研人都应该收藏的论文下载网站,不是sci-hub!
- 【python基础知识】如何查看pycharm中已经安装的插件
- Spring官网下载dist.zip的几种方法
- python常用文本处理功能
- 基于 lumen 的微服务架构实践
- JSP自定义标签(2)
- C++折半查找的实现
- python中kmeans怎么导入数据集_通过Python实践K-means算法
- Json对象直接存取数据库
- 一个伤心人的帖和一群搞笑的跟帖
- 各行各业有对象系列之三:对象存储与银行
- android餐饮管理系统,餐饮管理软件,餐饮软件,美萍餐饮管理系统,酒店收银系统,饭店点菜系统,餐饮点单库存系统...
- MATLAB从入门到精通:MATLAB调色板,作图更酷炫
- Android:如何优雅的开发马甲包?
- Java 中的Date(获取一天的开始时间和结束时间)
- iS-RPA2022.1.0 | 艺赛旗RPA新版本正式发布