陣列的距離
阿新 • • 發佈:2019-01-08
陣列的距離
時間限制: 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; }