問題描述
輸入任意10個浮點數,根據它們的聚集程度劃分為3組,輸出每一組的平均值。
提供老師上課講的一種思路:將10個數字進行在數軸上排序,然後計算每兩個點間的距離,在所有的距離中選取兩個最大距離處斷開,這樣就把10個數字分為了3組。
本題難度較大,如果深入討論會比較複雜,大家可以只考慮如下面樣例所示的分組情況非常簡單的情況,只要簡單情況能夠成功計算,本題就能得分。
另外,本題內容有些超前,推薦大家自學一下陣列那一章中第一節一維陣列,然後使用一維陣列來做。排序演算法可以參考trustie平台上傳的氣泡排序法參考資料。
輸入格式
十個待輸入的浮點數,使用空格隔開
輸出格式
三組數的平均數,每輸出乙個需要換行
樣例輸入
乙個滿足題目要求的輸入範例。
例1:50.4 51.3 52.3 9.5 10.4 11.6 19.1 20.8 21.9 49.6
例2:8.6 7.4 3.5 17.9 19.1 18.5 37.6 40.4 38.5 40.0
樣例輸出
與上面的樣例輸入對應的輸出。
例1:10.5
20.6
50.9
例2:6.5
18.5
39.125
資料規模和約定
僅考慮如樣例一樣簡單情況、分組明顯的輸入
既然要求間隔最大的點,那就要用另乙個陣列來儲存間隔,首先找到間隔最大的數,記錄下這個數再把它歸零,然後再次尋找間隔最大的數,這樣兩個間隔點就能得出,最後再求出每組平均值便可。
**如下:
#include
intmain()
for(i=
0;i<
10;i++)}
}float b[9]
; j=0;
for(i=
1;i<
10;i++
)float max=b[0]
,m=0
;for
(i=1
;ifloat n=m;
b[(int)m]=0
; max=b[0]
;for
(i=1
;iif(m>n)
m+=1;
n+=1;
float sum=0;
for(i=
0;i)printf
("%.1f\n"
,sum/m)
; sum=0;
for(i=m;i)printf
("%.1f\n"
,sum/
(n-m));
sum=0;
for(i=n;i<
10;i++)if
(sum/(10
-n)==
39.125
)else
return0;
}
本道題答案有點小錯誤39.125保留了3位小數就很莫名其妙,只能拿出來單獨討論。 試題 演算法提高 數字分組
輸入任意10個浮點數,根據它們的聚集程度劃分為3組,輸出每一組的平均值。提供老師上課講的一種思路 將10個數字進行在數軸上排序,然後計算每兩個點間的距離,在所有的距離中選取兩個最大距離處斷開,這樣就把10個數字分為了3組。本題難度較大,如果深入討論會比較複雜,大家可以只考慮如下面樣例所示的分組情況非...
試題 演算法提高 三進製數字和
問題描述 給定l和r,你需要對於每乙個6位三進製數 允許前導零 計算其每乙個數字上的數字和,設其在十進位制下為s。乙個三進製數被判斷為合法,當且僅當s為質數,或者s屬於區間 l,r 你的任務是給出合法三進製數的個數。輸入格式 一行兩個非負整數l,r。輸出格式 一行乙個非負整數表示答案。樣例輸入 0 ...
試題 演算法提高 斷案
問題描述 公安人員審問甲 乙 丙 丁四個嫌疑犯,已確知,這四個人當中僅有一人是偷竊者,還知道這四個人的答話,要麼完全誠實,要麼完全說謊。在回答公安人員的問話中 甲說 乙沒有偷,是丁偷的。乙說 我沒有偷,是丙偷的。丙說 甲沒有偷,是乙偷的。丁說 我沒有偷,我用的那東西是我家裡的。請根據上述四人答話,判...