问题 A: 两数组最短距离

    xiaoxiao2021-03-25  121

    题目描述

    已知元素从小到大排列的两个数组x[]和y[],请写出一个程序算出两个数组彼此之间差的绝对值中最小的一个,这叫做数组的距离。

    输入

    第一行为两个整数m, n(1≤m, n≤1000),分别代表数组f[], g[]的长度。第二行有m个元素,为数组f[]。第三行有n个元素,为数组g[]。

    输出

    数组的最短距离

    样例输入

    5 5 1 2 3 4 5 6 7 8 9 10

    样例输出

    1

    提示

    你能想出O(n+m)的算法吗?^_^ 加油!

    代码:

    #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int f[1000],g[1000]; int i,m,n,min1,min2,a; scanf("%d %d",&m,&n); for(i=0;i<m;i++) scanf("%d",&f[i]); for(i=0;i<n;i++) scanf("%d",&g[i]); min1=fabs(f[1]-f[0]); min2=fabs(g[1]-g[0]); for(i=1;i<m;i++) { if(min1>fabs(f[i+1]-g[i])) min1=fabs(f[i+1]-g[i]); } for(i=1;i<n;i++) { if(min2>fabs(g[i+1]-g[i])) min2=fabs(g[i+1]-g[i]); } a=(min1>min2)?min2:min1; printf("%d\n",a); return 0; }

    无运行结果,不会做的题。。

    fabs:求绝对值

    a=(min1>min2)?min2:min1:输出min 1和 min 2 中小的数

    转载请注明原文地址: https://ju.6miu.com/read-2756.html

    最新回复(0)