程式設計題 有趣的數字

2021-09-12 15:00:34 字數 1216 閱讀 1271

熱度指數: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.輸出描述 對於每組資料,輸出兩個數,第乙個數表...

有趣的邏輯數字題

個教授邏輯學的教授,有三個學生,而且三個學生均非常聰明!一天教授給他們出了乙個題,教授在每個人腦門上貼了一張紙條並告訴他們,每個人的紙條上都寫了乙個正整數,且某兩個數的和等於第三個!每個人可以看見另兩個數,但看不見自己的 教授問第乙個學生 你能猜出自己的數嗎?回答 不能,問第二個,不能,第三個,不能...