华为实习笔试复盘(1)配送站和客户问题

news2024/9/23 7:25:20

写在前面

自己玩了很多项目,但是最近准备秋招的过程中,发现自己对于算法和编程语言的基本功夫实在是太欠缺了。
投递了华为的实习岗位,4.26参加机考,一做题就发现了自己很多地方都不会。这里写下笔试后的复盘以警醒自己。

题目

按照记忆来回顾题目,仅供参考。解法为自己复盘所写,没有经过数据集测试,不保真。
如果有发现问题,欢迎提出,非常感谢!
机考第一题,分值(100分)

题目描述

在n*n的矩阵范围内,有K个配送站和N个客户点,配送点和客户的坐标给出。如何计算最短路径让K个配送点能够全部覆盖N个客户点。配送站和客户点的距离表示如:distance = |x1-x2| + |y1 - y2|

解题思路

复盘的时候,理解到这道题是一个匹配问题。
解题思路如下:

  • 先建立配送站和客户点的位置地图。地图大小是n*n矩阵,并将配送站和客户点的位置存储。
  • 求出所有配送站与客户的距离distance_all[K][N],并在计算的过程中记录最大距离max_distance。下图中D[K][N]表示第K的配送点和第N的客户的距离
    在这里插入图片描述
  • 然后开始从0到max_distance开始循环,每次循环的值为distance,再对距离数组先从上到下遍历,再从左到右遍历。
  • 如果在该列中存在D小于distance,那么代表有一个配送站能到达此客户点,那么跳出此列,进入下一列,直至遍历所有列。如果有一列不存在D小于distance,说明有一个客户点没有配送站能到达,那么跳出行遍历,distance++
  • 由于一定存在一个distance能够满足要求,因此无需考虑不存在distance的情况。如果行列遍历均结束,则跳出distance循环,并输出当前distance
    在这里插入图片描述

代码

因为是笔试后复盘,未经过数据集检验。解法也不一定是最优解。如果有问题或者别的思路,欢迎提出。

#include <stdio.h>      
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main()
{
    int R,C;
    scanf("%d %d", &R, &C);                             //扫描矩阵范围行*列:R*C
    //printf("%d", R);
    int people_num;
    scanf("%d", &people_num);                           //扫描客户数量
    //printf("%d", people_num);
    int R_location[people_num],C_location[people_num];  //初始化地图矩阵
    for(int i=0; i<people_num; i++)
    {
        scanf("%d %d", &R_location[i],&C_location[i]);  //获得客户的地址
        //printf("\n%d %d\n", R_location[i],C_location[i]);
    }

    int send;
    scanf("%d", &send);                                 //配送站的数量
    int R_send[send],C_send[send];
    int distance_all[send][people_num];                 //配送站到客户的距离
    for(int i=0; i<send; i++)
    {
        scanf("%d %d", &R_send[i],&C_send[i]);          //配送站的地址
        //printf("\n%d %d\n", R_send[i],C_send[i]);
    }

    //计算每个配送站到客户的距离并存储到distance_all中,并存储最大距离
    int max_distance=0;
    for(int i=0; i<send; i++){
        for(int j=0; j<people_num; j++){                
            distance_all[i][j] = abs(R_send[i]-R_location[j]) + abs(C_send[i] - C_location[j]);
            if(distance_all[i][j] > max_distance)
                max_distance = distance_all[i][j];
            printf("%d ",distance_all[i][j]);
        }
    }
    printf("\n");
    //从最短配送距离0到最长配送距离max_distance,因为最大的可能就是max_distance
    int distance = 0,i=0,j=0;
    for(distance = 0; distance<=max_distance; distance++){
        for(i=0; i<people_num; i++){

            for(j=0; j<send; j++){                
                if(distance_all[j][i] <= distance)
                    break;
            //printf("%d ",distance_all[i][j]);
            }
            if(j >= send)   //如果配送站到某一个用户距离比当前距离大,说明该用户无法被配送到,距离更新
                break;
        }
        if(i >= people_num) //如果有一个距离满足了所有用户都至少有一个配送站能到,说明该距离已经符号
            break;
    }
    printf("%d",distance);


    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/479950.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

服务网关Gateway

前言 API 网关出现的原因是微服务架构的出现&#xff0c;不同的微服务一般会有不同的网络地址&#xff0c;而外部客户端可能需要调用多个服务的接口才能完成一个业务需求&#xff0c;如果让客户端直接与各个微服务通信&#xff0c;会有以下的问题&#xff1a; 破坏了服务无状态…

python毕业设计之django+vue企业员工在线办公OA系统

该系统分用户和管理员。 管理员界面&#xff0c;具有以下功能&#xff1a; &#xff08;1&#xff09;添加用户&#xff1a;管理员添加本系统的用户信息。 &#xff08;2&#xff09;添加部门信息&#xff1a;管理员添加本系统的部门信息。 &#xff08;3&#xff09;添加职位信…

GLM:ChatGLM的基座模型

介绍 ChatGLM-6B&#xff1a;https://github.com/THUDM/ChatGLM-6B &#xff0c;主要是能够让我们基于单卡自己部署。ChatGLM的基座是GLM: General Language Model Pretraining with Autoregressive Blank Infilling论文中提出的模型。 动机 预训练语言吗模型大体可以分为三…

【MySQL约束】数据管理实用指南

1、数据库约束的认识 数据库约束的概念&#xff1a;数据库的约束是关系型数据库的一个重要的功能&#xff0c;它提供了一种“校验数据”合法性的机制&#xff0c;能够保证数据的“完整性”、“准确性”和“正确性” 数据库的约束&#xff1a; not null&#xff1a;不能存储 nul…

最强Http缓存策略之强缓存和协商缓存的详解与应用实例

HTTP缓存是指浏览器或者代理服务器将已经请求过的资源保存到本地&#xff0c;以便下次请求时能够直接从缓存中获取资源&#xff0c;从而减少网络请求次数&#xff0c;提高网页的加载速度和用户体验。缓存分为强缓存和协商缓存两种模式。 一. 强缓存 强缓存是指浏览器直接从本…

javaweb权限管理简单实现_javaweb管理系统项目

最近在做一个网站类型项目&#xff0c;主要负责后台&#xff0c;ui框架选型为jquery easy ui&#xff0c;项目架构为spring mvc spring jdbc&#xff0c;简单易用好上手&#xff01;搭建好框架后开始了第一个任务&#xff0c;设计并实现一套简单的权限管理功能。 一套最基本的…

深度学习第J8周:Inception v1算法实战与解析

目录 一、Inception v1 1.简介 2. 算法结构 二、pytorch代码复现1.前期准备 2.代码复现 3.训练运行 3.2指定图片进行预测 三、总结 &#x1f368; 本文为[&#x1f517;365天深度学习训练营]内部限免文章&#xff08;版权归 *K同学啊* 所有&#xff09; &#x1f356; 作…

ChatGPT登陆方法及常见问题

Chatgpt现在推出ChatGPT Plus服务&#xff0c;所以对注册账号限制比较大 Plus账号有什么优势&#xff1f; 我们可以看到官方介绍&#xff1a; 优势1 Available even when demand is high 当访问量大时&#xff0c;依旧可以访问 优势2 Faster response speed 更快的回复速度…

无云服务器,Linux本地快速搭建web网站,并内网穿透发布上线

文章目录 前言1. 本地搭建web站点2. 测试局域网访问3. 公开本地web网站3.1 安装cpolar内网穿透3.2 创建http隧道&#xff0c;指向本地80端口3.3 配置后台服务 4. 配置固定二级子域名5. 测试使用固定二级子域名访问本地web站点 转载自cpolar文章&#xff1a;Linux CentOS本地搭建…

医疗器械的分类与查询

我国根据医疗器械产品安全性对医疗器械进行分类管理。分类目录由国家食品药品监督管理部门依据医疗器械分类规则制定&#xff1a; 第一类是风险程度低&#xff0c;实行常规管理可以保证其安全、有效的医疗器械。如&#xff1a;外科用手术器械&#xff08;刀、剪、钳、镊、钩&a…

RabbitMQ 工作队列模式 Work Queue Demo

工作队列模式,一个消息只能有一个消费者消费 生产者发送20条消息 消费者有两个 第一个消费 睡一秒取一个 第二个睡2秒取 public class WorkConsumerTest1 {public static void main(String[] args) throws IOException, TimeoutException {//1 创建连接工厂ConnectionFactor…

「华熙生物」发来感谢信,企企通赋能生物科技领域数字化采购建设

近日&#xff0c;华熙生物科技股份有限公司&#xff08;以下简称“华熙生物”&#xff09;携手企企通打造的数字化采购管理平台成功上线。为感谢企企通在采购数字化项目上的付出和努力&#xff0c;华熙生物特意发来暖心感谢信。 在感谢信中&#xff0c;华熙生物表示&#xff1a…

【目标检测实验系列】YOLOv5改进实验:结合VariFocal Loss损失函数,减少小目标漏检问题,高效提升模型检测的召回率(超详细改进代码流程)

目录 1. 文章主要内容2. VariFocal Loss损失函数&#xff08;原理&#xff1a;简单介绍&#xff0c;可自行详细研究&#xff09;2.1 VariFocal Loss损失函数2.2 博主数据集实验效果 3. 代码详细改进流程(重要)3.1 新建varifocalLoss.py文件3.2 修改hyp.scratch-low.yaml文件3.3…

【MATLAB图像处理实用案例详解(20)】——利用BP神经网络实现人脸朝向判断

目录 一、问题描述二、算法步骤2.1 读入数据并提取特征2.2 创建神经网络并训练2.3 测试 三、结果分析 一、问题描述 BP神经网络利用输出后的误差来估计输出层的直接前导层的误差&#xff0c;再用这个误差估计更前一层的误差&#xff0c;如此一层一层的反传下去&#xff0c;就获…

4_用dockerfile制作镜像

Docker 镜像原理 思考&#xff1a; Docker 镜像本质是什么&#xff1f; Docker 中一个centos镜像为什么只有200MB&#xff0c;而一个centos操作系统的iso文件要几个个G&#xff1f; Docker 中一个tomcat镜像为什么有500MB&#xff0c;而一个tomcat安装包只有70多MB&#xff…

JavaScript中的Concurrency并发:异步操作下的汉堡制作示例

这篇文章想讲一下JavaScript中同步与异步操作在一个简单的示例中的应用。我们将以制作汉堡为例&#xff0c;展示如何使用同步方法、回调函数&#xff08;callbacks&#xff09;和Promise与async/await来实现该过程。 Let’s imagine we’re trying to make a burger: 1. Get …

基于simulink使用混合波束成形对射频毫米波发射器进行建模

一、前言 本例说明了一种使用66元件混合波束成形天线对32 GHz QPSK射频发射和接收系统进行系统级建模和仿真的方法。该系统包括射频缺陷、发射阵列辐射效应、窄带接收阵列和基带接收器&#xff0c;可校正系统损伤和消息解码。天线波束形成方向使用方位角和仰角定义&#xff0c;…

C语言CRC-16 USB格式校验函数

C语言CRC-16 USB格式校验函数 CRC-16校验产生2个字节长度的数据校验码&#xff0c;通过计算得到的校验码和获得的校验码比较&#xff0c;用于验证获得的数据的正确性。基本的CRC-16校验算法实现&#xff0c;参考&#xff1a; C语言标准CRC-16校验函数。 不同应用规范通过对输…

计算机图形辐照度学、光度学

文章目录 前言&#xff1a;一、什么是辐照度学二、什么是光度学 前言&#xff1a; 在计算机图形学中是把辐射(Radiance)等概念和亮度(Luminance)等概念不做区分的。辐射是辐照度学的概念&#xff0c;而亮度则是光度学上的概念。 辐照强高度并不意味着亮度就强&#xff0c;就比如…

VTK 几何体连通区域分析 vtkPolyDataConnectivityFilter

前言&#xff1a; vtkPolyDataConnectivityFilter 使用过&#xff0c;但网上没有看到完事的教程&#xff1b;这里整理一下&#xff1b; 提取数据集中连通的多边形数据。 该类是一个滤波器&#xff0c;提取cell&#xff08;区域&#xff09; - 拥有公共点或者满足某个阈值 该类…