当前位置: 首页 > article >正文

求三元组中可能出现的最小距离

定义三元组(a,b,c)(a,b,c均为整数)的距离D = ∣ a − b ∣ + ∣ b − c ∣ + ∣ c − a ∣ 。给定3个非空整数集合S1,S2和S3,按升序分别存储在3个数组中。请设计一种尽可能高效的算法,计算并输出所有可能的三元组(a,b,c)(a ∈ S1 , b ∈ S2 , c ∈ S3)中的最小距离。

例如,S1={-1,0,9},S2={-25,-10,10,11},S3={2,9,17,30,41},则最小距离为2,相应的三元组为(9,10,9)。

方法一:暴力

思想:三层循环,计算所有∣ a − b ∣ + ∣ b − c ∣ + ∣ c − a ∣,最后保留符合题意的三元组。

代码:

typedef struct{
	int a,b,c //三元组
	int value; 
}TripleDistance;
TripleDistance minDistance(int s1[],int s2[],int s3[],int n1,int n2,int n3){
	TripleDistance td;//定义三元组 
	td.value=INF_MAX;//初始化 
	for(int i=0;i<n1;i++){//遍历s1
		for(int j=0;j<n2;j++){//遍历s2 
			for(int k=0;k<n3;k++){//遍历s3
				int dis =abs(s1[i]-s2[j])+abs(s2[j]-s3[k])+abs(s3[k]-s1[i]);//计算距离 
				if(dis<td.value && s1[i]>0 && s2[j]>0 && s3[k]>0){//判断是否为最小值 
					td.value=dis;
					td.a=s1[i];
					td.b=s2[j];
					td.c=s3[k];
				}
			}
		}
	} 
	return td;
	
} 

时间复杂度O(n^3);空间复杂度O(1)

方法二:明天更新。


http://www.kler.cn/a/288994.html

相关文章:

  • layui.all.js:2 Uncaught Error: Syntax error, unrecognized expression
  • 【云原生系列--Longhorn的部署】
  • SQL 注入详解:原理、危害与防范措施
  • 【力扣热题100】[Java版] 刷题笔记-169. 多数元素
  • C++ 编程基础(6)作用域 | 6.3、类作用域
  • 三维测量与建模笔记 - 特征提取与匹配 - 4.2 梯度算子、Canny边缘检测、霍夫变换直线检测
  • RabbitMQ练习(Routing)
  • 使用COAP和MQTT协议的多协议方法开发的用于机器人手术的自动医疗物联网系统
  • vue3+ts 实现模板表格文件下载~
  • pikachu文件包含漏洞靶场攻略
  • 密钥分发与公钥认证:保障网络通信的安全
  • MySQL入门学习-MySQL的连接查询
  • MySQL——事务与存储过程(二)存储过程的创建(4)光标的使用
  • 【Linux学习笔记】protobuf相关操作
  • 数仓基础(九):各大公司实时数仓实践
  • Go锁 详解
  • k8s-使用Network Policies实现网络隔离
  • (二)、软硬件全开源智能手表,可全面高精度采集生命体征数据,进行健康检测。(HealthyPi Move)
  • 【Java中的三元运算符】
  • 书法图片自动扣字的批处理
  • leecode 31.下一个排列(Golang)
  • 深度学习100问27:什么是截断的BPTT
  • mysql的组从复制
  • 检测文件解析漏洞的工具
  • 技术Leader在训练团队思考力中的核心职责
  • MySQL常用的查询优化分析方法有哪些?