熱度指數:26051時間限制:1秒空間限制:32768k
小q今天在上廁所時想到了這個問題:有n個數,兩兩組成二元組,相差最小的有多少對呢?相差最大呢?輸入描述:
輸入包含多組測試資料。 對於每組測試資料: n - 本組測試資料有n個數 a1,a2…an - 需要計算的資料保證:
1<=n<=100000,0<=ai<=int_max.輸出描述:
對於每組資料,輸出兩個數,第乙個數表示差最小的對數,第二個數表示差最大的對數。示例1
輸入
6輸出45 12 45 32 5 6
1 2思路為
1、首先將陣列排序
2、判斷是否全部數字都是重複數字,若是則用全組合公式c(n,2)=n*(n-1)/2計算對數
3、若不都是重複數字,則
計算差最大的對數
對數=陣列中最小的數的個數*陣列中最大的數的個數
計算差最小的對數
先計算相鄰數的差值
1、若差值為0,說明有重複數字,迴圈計算重複數字的對數
2、若差值不為0,說明沒有重複數字,計算相鄰元素相減等於差值的對數即可
**如下,主要是分情況討論,看到有其他大佬的題解是用map做的,也是一種好的方法
#include #include using namespace std;
int main()
//排序
sort(a,a+n);
//若全部數字都相同
if(a[0]==a[n-1])
//找到相鄰兩個數差的最小值
int min=99999999;
for (int i = 1; i < n; ++i)
//若最小值為0說明有重複的數字,組合計算對數
if(!min)}}
//若不為0說明陣列的數字都不相同,直接計算差值最小的對數
else
}cout<}
}return 0;
}
有趣的程式設計題
1 甲乙做乙個遊戲叫做pick a number 給定乙個數字list,甲先從list首尾選乙個數字,然後乙從剩下數字首尾選乙個數字,已知甲乙都足夠聰明,以保證自己拿到的最終分數最高,用遞迴寫出pick a number的程式 比如list 3,5,2,1 最終甲乙得分為 6,5 2 arthur最...
演算法題 有趣的數字
小q今天在上廁所時想到了這個問題 有n個數,兩兩組成二元組,差最小的有多少對呢?差最大呢?輸入描述 輸入包含多組測試資料。對於每組測試資料 n 本組測試資料有n個數 a1,a2 an 需要計算的資料 保證 1 n 100000,0 ai int max.輸出描述 對於每組資料,輸出兩個數,第乙個數表...
有趣的邏輯數字題
個教授邏輯學的教授,有三個學生,而且三個學生均非常聰明!一天教授給他們出了乙個題,教授在每個人腦門上貼了一張紙條並告訴他們,每個人的紙條上都寫了乙個正整數,且某兩個數的和等於第三個!每個人可以看見另兩個數,但看不見自己的 教授問第乙個學生 你能猜出自己的數嗎?回答 不能,問第二個,不能,第三個,不能...