Description
已知元素从小到大排列的两个数组x[]和y[],请写出一个程序算出两个数组彼此之间差的绝对值中最小的一个,这叫做数组的距离。
Input
第一行为两个整数m, n(1≤m, n≤1000),分别代表数组f[], g[]的长度。
第二行有m个元素,为数组f[]。
第三行有n个元素,为数组g[]。
Output
数组的最短距离
Sample Input
5 5
1 2 3 4 5
6 7 8 9 10
Sample Output
1
两数组差的最小值
答案:3 悬赏:10
解决时间 2021-04-08 05:23
- 提问者网友:星空下的寂寞
- 2021-04-07 05:04
最佳答案
- 二级知识专家网友:星星坠落
- 2021-04-07 06:01
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <limits.h>
int main()
{
int f[1000], g[1000];
int m, n, d = INT_MAX;
int i, j, t;
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]);
for (i = 0; i < m; ++i)
{
for (j = 0; j < n; ++j)
{
t = abs(f[i] - g[j]);
if (t < d)
d = t;
}
}
printf("%d\n", d);
return 0;
}
#include <stdlib.h>
#include <math.h>
#include <limits.h>
int main()
{
int f[1000], g[1000];
int m, n, d = INT_MAX;
int i, j, t;
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]);
for (i = 0; i < m; ++i)
{
for (j = 0; j < n; ++j)
{
t = abs(f[i] - g[j]);
if (t < d)
d = t;
}
}
printf("%d\n", d);
return 0;
}
全部回答
- 1楼网友:花一样艳美的陌生人
- 2021-04-07 08:34
public int getmax(int[] args){
int max = 0;
//设定一个数,用于存放最大值
for(int i=0;i args[i] ? max : args[i];
}
//返回获得的最大值
return max;
}
- 2楼网友:浪者不回头
- 2021-04-07 07:22
int m,n,g[1000],f[1000];
int i,j,c;
int min = 10000;
scanf("%d %d",&m,&n);
for ( i=0;i<m;i++)
scanf("%d",&(f[i]));
for( j=0;j<n;j++)
scanf("%d",&(g[j]));
//先拿最大的减最小的
for(int a =0;a<i;a++)
for(int b=0;b<j;b++)
{c=(f[a]-g[b]>=0?f[a]-g[b]:g[b]-f[a]);
if(c<min)min=c;}
printf("距离是 %d",min);
return 0;
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |