文章目录

  • 1 题目
  • 2 解法一(朴素算法)
  • 3 解法二

1 题目

定义三元组(a,b,c)(a,b,c均为整数)的距离D=∣a−b∣+∣b−c∣+∣c−a∣D=|a-b| + |b-c|+|c-a|D=∣a−b∣+∣b−c∣+∣c−a∣。给定3个非空整数集合S1,S2和S3,按升序分别存储在3个数组中。请设计一种尽可能高效的算法,计算并输出所有可能的三元组(a,b,c)(a∈S1,b∈S2,c∈S3a \in S1,b \in S2,c \in S3a∈S1,b∈S2,c∈S3)中的最小距离。
例如,S1={-1,0,9},S2={-25,-10,10,11},S3={2,9,17,30,41},则最小距离为2,相应的三元组为(9,10,9)。

2 解法一(朴素算法)

思路:
暴力求解所有可能

#include<cstdio>
#include<climits>
#include<cmath>
#include<string.h>
#include<iostream>int main(){//S1={-1,0,9},S2={-25,-10,10,11},S3={2,9,17,30,41}int S1[] = {-1,0,9};int S2[] = {-25, -10, 10, 11};int S3[] = {2, 9, 17, 30, 41};int res[3];//初始化memset(res, 0, sizeof(res));//计算长度int extent1 = sizeof(S1)/sizeof(*S1);int extent2 = sizeof(S2)/sizeof(*S2);int extent3 = sizeof(S3)/sizeof(*S3);//定义int最大值,用于向下比较int minLength = INT_MAX; for(int i = 0;i < extent1;i++){for(int j = 0;j < extent2;j++){for(int k = 0;k < extent3;k++){int tempLength = std::abs(S1[i] - S2[j]) + std::abs(S2[j]- S3[k]) + std::abs(S3[k] - S1[i]);if(tempLength < minLength){minLength = tempLength;res[0] = S1[i];res[1] = S2[j];res[2] = S3[k];}}}}for(auto i:res){std::cout<<i<<std::endl;}printf("MinLength is %d", minLength);  return 0;
}

时间复杂度:O(extent1extent2extent3)

3 解法二

思路(摘自百度文档):




实现代码:

#include<cstdio>
#include<climits>
#include<cmath>
#include<string.h>
#include<iostream>#define xIsMin(x, y, z) (((x) <= (y)) && ((x) <= (z)))int main(){//S1={-1,0,9},S2={-25,-10,10,11},S3={2,9,17,30,41}int S1[] = {-1,0,9};int S2[] = {-25, -10, 10, 11};int S3[] = {2, 9, 17, 30, 41};int res[3];memset(res, 0, sizeof(res));int extent1 = sizeof(S1)/sizeof(*S1);int extent2 = sizeof(S2)/sizeof(*S2);int extent3 = sizeof(S3)/sizeof(*S3);int minLength = INT_MAX, dis;int i = 0, j = 0, k = 0; while(i < extent1 && j < extent2 && k < extent3 && minLength > 0){dis = std::abs(S1[i] - S2[j]) + std::abs(S2[j]- S3[k]) + std::abs(S3[k] - S1[i]);if(dis < minLength){minLength = dis;res[0] = S1[i];res[1] = S2[j];res[2] = S3[k];}if(xIsMin(S1[i],S2[j],S3[k])) i++;else if(xIsMin(S2[j],S3[k],S1[i])) j++;else k++;}for(auto i:res){std::cout<<i<<std::endl;}printf("MinLength is %d", minLength);     return 0;
}

时间复杂度:O(extent1+ extent2+ extent3)

2020年专业408的算法题相关推荐

  1. 408计算机考研大纲 doc,2020计算机专业408基础综合考研大纲

    研究生考试信息,欢迎访问北京研究生招生信息网. 考试大纲是我们每个考研的学生所强烈关注的,因为考试大纲里所公布的内容,是我们复习过程中必须掌握的.随着考研大军逐年壮大,竞争力越来越强.我们可以发现,虽 ...

  2. [考研408]数据结构算法题——快速排序模板

    目的:速写明确,好改易懂 void QuickSort(int a[], int left, int right) {if (left >= right)return;int i = left, ...

  3. 搜狗2020秋招笔试的一道算法题

    搜狗2020秋招的一道算法题 有A,B,C三种样品,凑齐三个样品各一个就可以领取一个奖品.任意两个样品可兑换另一种样品,如AA可兑换一个B或一个C,AB可兑换一个C.输入ABC,问最多可以领取多少奖品 ...

  4. 2023年考研计算机统考408计算机学科专业基础历年真题下载

    2023年考研计算机统考<408计算机学科专业基础综合>题库[历年考研真题+章节题库+模拟试题] 武汉大学部分专业21年拟录数据(仅做参考) 零丁学习网整理 081601大地测量学与测量工 ...

  5. 考研计算机统考408计算机学科专业基础综合真题视频课程哪里有

    考研计算机统考<408计算机学科专业基础综合>真题解析班(网授) 408计算机专业基础综合难度大吗? 零丁学习网整理 408的全称是"408计算机专业基础综合",是计算 ...

  6. 计算机专业英语自考真题,2020年4月自考《专业英语》真题及答案

    距离2020年10月成人教育自学考试愈发临近,考生该如何高效复习?中国教育在线自考频道小编为各位考生整理了2020年4月自考<专业英语>真题及部分答案,考生可针对历年考试真题重要知识点强化 ...

  7. 字节跳动-2020秋招-笔试题剖析【5道算法题】

    字节跳动-2020秋招-笔试题剖析[5道算法题],限时120分钟. 让我们一起来看看这些题吧! 题一:模型文件去重 [题目描述] 抖音上不同的用户类型我们有不同的用户模型文件. 我们有一个模型配置文件 ...

  8. 408最后计算机网络题库,2021考研计算机统考408专业基础综合题库

    **部分为历年考研真题.提供2009-2018年考研真题及参考答案,其中2009-2015年每道真题均提供详细答案解析,通过对真题的演练和分析,可以帮助学员牢牢抓住计算机学科专业基础综合考试的命题特点 ...

  9. 2020烟草专业一战跨考复旦大学计算机专硕经验贴

    2020烟草专业一战跨考复旦大学计算机专硕经验贴 前言: 复试结果已经出来了近两个礼拜,才想起写下这一年来的过程,当作自己人生的一个记录.其次,我感觉自己跨度算挺大的,应该对之后烤研的铁子们有所帮助. ...

  10. 2020杭电网安考研复试题+经验

    2020杭电网安考研复试题+经验 个人感受 复试流程 上机笔试 考试形式 2018年编程题目 2019年编程题目 2020年 面试提问 提问内容 2018年 2019 2020复试经验 英语口语考核 ...

最新文章

  1. 安装 Fedora 22 后要做的事情
  2. administrator自动登录桌面
  3. zoj 3511 Cake Robbery(线段树)
  4. MFC Attach()函数和Detach()函数
  5. 前端学习(2894):列表组件的拆分和样式编写
  6. 贡献开源项目没那么简单,你要负责到底
  7. M斐波那契数列(HDU-4549)
  8. 【今日CS 视觉论文速览】14 Dec 2018
  9. 超经典实用APP UI产品界面设计模板
  10. python字符宽度_Python计算字符宽度的方法
  11. eltable 无数据文案修改_el-table的二次封装详细版(一)
  12. Atitit 人工智能目前的进展与未来 包含的技术 v2 r99.docx
  13. 3.3 DXC简介——HANA数据抽取和同步
  14. 华硕h410csm怎么开启_华硕主板怎么开启uefi模式?华硕主板BIOS开启uefi模式详细方法...
  15. oracle查看锁表语句、解锁方法
  16. 图像处理基础:特征金字塔
  17. 计算机无法读取智能卡,电脑智能卡读卡器驱动程序丢失怎么办?如何重新安装智能卡服务?...
  18. F. Clear the String (区间DP)
  19. 1077E Thematic Contests 【二分答案】
  20. 陕西二级分销系统开发适合做什么业务?

热门文章

  1. 计算机系统相机怎么卸载,如何卸载摄像头驱动
  2. 苹果自带的清理软件_系统自带垃圾清理软件屁用没有,但这款9.4评分的真心好用...
  3. 计算机和软件专业大学排名,全国计算机软件专业大学排名TOP20,清华居然不是第一!...
  4. Ordinal Regression with Multiple Output CNN for Age Estimation-(系列一_年龄估计)
  5. 谈一谈|《黑神话:悟空》实机演示观后感
  6. 计算机网络共享文件密码,如何给局域网共享文件夹设置访问密码
  7. 布局改变时的过场动画
  8. WPS-Word中换行符、回车符删除不掉怎么办?某一个空行删不掉
  9. c语言 字符串提取连续数字,c语言一串字符串中提取数字并相加的问题
  10. html中的embed标签属性,html中Embed标签的语法和属性设置