zoukankan      html  css  js  c++  java
  • AOJ.176 两数组最短距离 (乱搞题)

    两数组最短距离

    点我挑战题目

    题意分析

    给出2个数组,让求出2个数组元素差的绝对值的最小值是多少。
    我这里是o(m+n)的算法。首先对于第一个数组,让他的第一个元素和第二个元素比较,如果他的第一个元素比另一个数组的第一个元素大,那么首先记录一下差值,然后判断数组的下一个元素(即i++)。反之判断记录差值并且判断另一个数组的下一个元素(j++),直到将两个数组都遍历一遍,差值所保存的结果是就是最后的最短距离。
    当然还有o(n*m)的算法。那就是暴力,将第一个数组的第一个元素依次和第二个数组的每个元素做差值比较,然后记录最小值;接着计算第二个元素和第二个数组的每个元素的差值,并记录最小值,直到遍历完第一个数组,输出差值即可。

    /*
        Title:AOJ.176
        Author:pengwill
        Date:2016-11-28
    */
    #include <stdio.h>
    #include <stdio.h>
    #include <math.h>
    #define max 1005
    int main()
    {
        int m,n;
        int a1[max],a2[max];
        while(scanf("%d %d",&n,&m) != EOF){
            int i;
            for(i = 0;i<n;i++){
                scanf("%d",&a1[i]);
            }
            for(i = 0;i<m;i++){
                scanf("%d",&a2[i]);
            }
            int j,ret ;
            i = j = 0;
            ret = -1;
            while(i<n&&j<m){
                if(a1[i]>a2[j]){
                    if(ret == -1 || ret > fabs(a1[i]-a2[j])){
                        ret = fabs(a1[i]-a2[j]);
                    }
                    j++;
                }else if(a1[i]<a2[j]) {
                    if(ret == -1 || ret > fabs(a1[i]-a2[j])){
                        ret = fabs(a1[i]-a2[j]);
                    }
                    i++;
                }else if(a1[i] == a2[j]) {
                    ret = 0;
                    break;
                }
            }
            printf("%d
    ",ret);
        }
        return 0;
    }
    
  • 相关阅读:
    python之Socket网络编程
    python_异常处理
    python_面向对象编程
    Vue-cli3与springboot项目整合打包
    命令打开java控制面板
    后端记录用户登录失败次数
    跨域问题解决办法
    vue-i18n多语言文件归类的两种方法
    svn全局设置过滤文件没有作用的解决办法
    vue数据变化后页面刷新
  • 原文地址:https://www.cnblogs.com/pengwill/p/7367189.html
Copyright © 2011-2022 走看看