|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
大佬们,我这个程序是求两数组间最小距离的,然后有bug,求值是错的,我感觉我编写的好像没啥问题,大佬们能帮我看看吗
样例输入
5 5
1 2 3 4 5
6 7 8 9 10
- #include<stdio.h>
- #include<math.h>
- //计算两数组间最小间隔
- int main(void)
- {
- int m, n;
- int arr_m[1001], arr_n[1001];
- int min;
- int a;
- scanf("%d%d", &m, &n);
- for (int i = 0; i < m; i++)
- {
- scanf("%d", &arr_m[i]);
- }
- for (int i = 0; i < n; i++)
- {
- scanf("%d", &arr_n[i]);
- }
- //循环嵌套
- for (int i = 0; i < m; i++)
- {
- for (int j = 0; j < n; j++)
- {
- if (i == 0 && j == 0)
- {
- min = fabs(arr_m[i] - arr_n[j]);
- }
- if (fabs((arr_m[i] - arr_n[j]) < min))
- {
- min = fabs(arr_m[i] - arr_n[j]);
- }
- }
- }
- printf("%d", min);
- return 0;
- }
复制代码
本帖最后由 jackz007 于 2022-10-8 12:00 编辑
第 32 行有误
- if (fabs((arr_m[i] - arr_n[j]) < min))
复制代码
应该改为:
- if (fabs(arr_m[i] - arr_n[j]) < min)
复制代码
楼主试试这个代码
- #include <stdio.h>
- int main(void)
- {
- int d , e , i , j , m , n ;
- scanf("%d%d" , & m , & n) ;
- int a[m] , b[n] ;
- for(i = 0 ; i < m ; i ++) scanf("%d" , & a[i]) ;
- for(i = 0 ; i < n ; i ++) scanf("%d" , & b[i]) ;
- for(d = (a[0] > b[0]) ? a[0] - b[0] : b[0] - a[0] , i = 0 ; i < m ; i ++) {
- for(j = 0 ; j < n ; j ++) {
- e = (a[i] > b[j]) ? a[i] - b[j] : b[j] - a[i] ;
- if(e < d) d = e ;
- }
- }
- printf("%d\n" , d) ;
- }
复制代码
|
|