剛看到這個(gè)題的時(shí)候以為10分鐘就能做出來(lái),但是還是有坑的,不小心的話總是無(wú)法全對(duì),還是做了好一會(huì)兒。
先放C++版的答案,代碼簡(jiǎn)潔,思路簡(jiǎn)單。
#include
#include
using namespace std;
int main()
{
int Max,Min,n,flag=0;
double Mid;
cin>>n;
int a[n];
for(int i=0; i
>a[i];
}
if(n%2)
Mid = a[n/2];
else
Mid = (a[n/2]+a[n/2-1])/2.0;
if(a[n-1] > a[0]){
Max = a[n-1];
Min = a[0];
}else{
Max = a[0];
Min = a[n-1];
}
if(int(Mid) == Mid)
cout<
<<" "<
有兩個(gè)需要注意的地方,第一個(gè)是分?jǐn)?shù)的輸出格式,用setw()臨時(shí)控制其后一個(gè)數(shù)據(jù)的輸出(只控制Mid),第二個(gè)是輸出中位數(shù)時(shí),注意2.0這種數(shù)據(jù)的出現(xiàn),用int(Mid)判斷一下就好了。
?
用Python寫(xiě)就舒服多了,關(guān)鍵是變量的類(lèi)型轉(zhuǎn)換比較方便~
n = int(input())
data = [int(i) for i in input().split()]
Max = max(data)
Min = min(data)
half = len(data) // 2
Mid = (data[half] + data[~half])/2 #這里Mid是浮點(diǎn)數(shù)
if(int(Mid) == Mid):
Mid = int(Mid)
print("{} {} {}".format(Max,Mid,Min))
運(yùn)行速度還是蠻快的,但是耗內(nèi)存比較多,幸好這道題數(shù)據(jù)量不大,比賽的時(shí)候需要謹(jǐn)慎使用~
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

