算法练习:数组的距离

内容:已知两个元素从小到大排列数组x[]和y[],请编写一个程序算出两个数组元素彼此之间差的绝度值中最小的一个

数,此值称作数组的距离。

例如:x[]有1,3,5,7,9   y[]有2,6,8  那么最短距离就是1,因为x[0]和y[0]、x[1]和y[0]、x[2]和y[1]、x[3]和y[1]还有x[4]和

y[2]的距离都是1.

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/

我的解法:上来没多想,打开vs2013就敲了起来,问题果然很简单,分分钟就超神。。奥,不对就解决了!然后发现这个题目有点像某oj上面的题目,不过现在看来还是挺简单滴。。嘿嘿。。我又进步了O(∩_∩)O~。

#include <iostream>
#include <math.h>
#define min(x,y) (x < y ? x : y)
using namespace std;     

int _tmain(int argc, _TCHAR* argv[])
{
    int sLength(int x[], int y[], int x_Length, int y_Length);
    int x[5] = { 1, 14, 31, 50, 70 };
    int y[5] = { 7, 23, 40, 60, 75 };
    int sL = sLength(x, y, 5, 5);
    cout << "两个数组的最短距离为: " <<  sL  << endl;
    getchar();
    return 0;
}     

int sLength(int x[], int y[], int x_Length, int y_Length)
{
    int shortLength = TMP_MAX;
    int x_Index = 0;
    int y_Index = 0;
    while (x_Index < x_Length && y_Index < y_Length)
    {
        if (x[x_Index] >= y[y_Index])
        {
            shortLength = min(shortLength, (x[x_Index] - y[y_Index]));
            y_Index++;
        }
        else
        {
            shortLength = min(shortLength, (y[y_Index] - x[x_Index]));
            x_Index++;
        }
    }
    return shortLength;
}

实验结果是:

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数组
, int
, include
, oj
, 题目
, 元素
, 两个
, oj问题
_tmain()
,以便于您获取更多的相关知识。

时间: 2024-09-15 05:46:49

算法练习:数组的距离的相关文章

python标准算法实现数组全排列的方法

 这篇文章主要介绍了python标准算法实现数组全排列的方法,实例分析了全排列的原理与Python实现技巧,需要的朋友可以参考下     本文实例讲述了python标准算法实现数组全排列的方法,代码来自国外网站.分享给大家供大家参考.具体分析如下: 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列.当m=n时所有的排列情况叫全排列. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 def Miden

iostream-程序目的是通过排序算法进行数组由大到小排序 但不同编译器运行结果不一致

问题描述 程序目的是通过排序算法进行数组由大到小排序 但不同编译器运行结果不一致 程序目的是通过排序算法进行数组由大到小排序 但不同编译器运行结果不一致 #include <iostream> #include <iomanip> //使用setw()函数 using namespace std;//定义无参函数 void bubble(int[], int); int main() { int arry[10] = {11, 4, 55, 6, 77, 8, 9, 0, 7, 1

c#-数据结构(C#),算法,数组

问题描述 数据结构(C#),算法,数组 我想用C#语言中数组来存储,可是怎样写数组的算法?怎样调用? 解决方案 你是不会用数组吗http://www.cnblogs.com/jiajiayuan/archive/2012/04/19/2442673.html 解决方案二: 数据结构与算法(C#):数组和ArrayList数据结构和算法------数组C#算法与数据结构汇总 解决方案三: 你这问题问的,哪种语言里边没有数组... 解决方案四: 你要用数组来存储什么东西?这个要所清楚!别人才好回答你

python标准算法实现数组全排列的方法_python

本文实例讲述了python标准算法实现数组全排列的方法,代码来自国外网站.分享给大家供大家参考.具体分析如下: 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列.当m=n时所有的排列情况叫全排列. def Mideng(li): if(type(li)!=list): return if(len(li)==1): return [li] result=[] for i in range(0,len(li[:])): bak=li[:] h

JavaScript使用二分查找算法在数组中查找数据的方法_javascript技巧

本文实例讲述了JavaScript使用二分查找算法在数组中查找数据的方法.分享给大家供大家参考.具体分析如下: 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好:其缺点是要求待查表为有序表,且插入删除困难.因此,折半查找方法适用于不经常变动而查找频繁的有序列表.首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功:否则利用中间位置记录将表分成前.后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一

C#使用自定义算法对数组进行反转操作的方法

 C#的Array对象自带反转功能,但是下面的代码完全通过自定义的算法来实现数组反转 代码如下: public static void ReverseArray<T>(this T[] inputArray) { T temp = default(T); if (inputArray == null) throw new ArgumentNullException("inputArray is empty"); if (inputArray.Length > 0) {

采用部分快速排序算法实现数组的部分排序

快速排序算法,网上相关文章已经介绍的很多了,数据结构教材中也有很详 细的介绍.本文需要阐述的不是全排序快速排序算法,而是部分快速排序算法. 所谓部分快速排序算法是指通过排序获取一个数列中最大的若干条有序记录.比如我们需要从一个有1百万记录的数组中获取前100条有序记录,并按从大到小顺 序显示给用户,这种应用在搜索引擎中经常被使用,很少会有人有耐心将100万 条搜索出来的记录都阅读一遍,一般阅读前几百条纪录就可以得到自己满意的答案.其实这种算法很像SQLSERVER 中的TOP n 的实现,不过数

经典算法(12) 数组中只出现1次的两个数字(百度面试题)

首先来看题目要求: 在一个数组中除两个数字只出现1次外,其它数字都出现了2次, 要求尽快找 出这两个数字. 考虑下这个题目的简化版--数组中除一个数字只出现1次外,其它数字都成对出现 ,要求尽快找出这个数字.这个题目在之前的<位操作基础篇之位操作全面总结>中的"位操作趣味应用" 中就已经给出解答了.根据异或运算的特点,直接异或一次就可以找出这个数字. 现在数组中有两个 数字只出现1次,直接异或一次只能得到这两个数字的异或结果,但光从这个结果肯定无法得到这个两个数字 .因此我

C#常用算法:数组

C#对数组概念进行了彻底的面向对象化,很大程度上降低了我们对数组结构的使用难度,并且它已经支持了.Net平台的垃圾收集机制.随着C#版本的不断更新,从数组中派生出的新数据结构也日益增加.按照28原理,我们只需要使用其中的20%就能解决80%的问题.但为了做到极致,我们还是需要了解下它们.本文总结到C#(4.0)为止的一些与数组相关的数据结构以及它们的用法. 基本数组 string[] fruit = new string[5]; string[] vegetable = new string[]