1. 程式人生 > >陣列的距離

陣列的距離

 陣列的距離

時間限制: 1 Sec  記憶體限制: 128 MB
提交: 1414  解決: 808
[提交] [狀態] [討論版] [命題人:外部匯入]

題目描述

已知元素從小到大排列的兩個陣列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

 

 

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
/*
對Num陣列中所有的元素使用sort函式由小到大排序 
*/
bool cmp(int a, int b)
{
	return a < b;
}
/*Num陣列元素個數最多為1000000
定義在main之外,定義在main函式裡面會報錯*/
int Num[1000003]; 

int main()
{
	int m;
	int n;
	cin >> m >> n;
	/*定義兩個陣列並輸入資料*/
	int num1[m];
	int num2[n];
	for(int i=0; i<m; i++)
	{
		cin >> num1[i];
	}
	for(int i=0; i<n; i++)
	{
		cin >> num2[i];
	}
	int count = 0;//用來記錄Num陣列中元素的個數,初始為0 
	for(int i=0; i<m; i++)
		for(int j=0; j<n; j++)
		{
			/*
			用陣列Num記錄num1和num2中兩兩元素差的絕對值 
			*/
			Num[count] = abs(num1[i] - num2[j]);
			count++;//陣列中元素個數加1 
		}
	sort(Num,Num+count,cmp);//對Num陣列中元素進行排序 
	cout << Num[0] << endl;//輸出Num中最小的一個 
	return 0;
}