現在犯錯,總比考試時犯錯來的好。
很抱歉造成錯誤說明
output應該是中位數最小值、符合中位數條件總數、符合中位數條件
時間超時,會再思考更佳演算法。
import sys
def test(fun):
#總開關
if(1):
return 1
#單項開關
if(fun=="inp"):
return 0
if(fun=="dist"):
return 1
控制監測程式,這次多了總開關。
#主程式
def main ():
inp()
#讀取測資
def inp():
sinput=sys.stdin.readline()
while(sinput!=""):
sinput=sinput.replace("\r","").replace("\n","")
casenum=int(sinput)
allnum=[]
#測資總數字
for i in range(casenum):
nums=sys.stdin.readline().replace("\n","")
allnum.append(int(nums))
if(test("inp")):print(allnum)
dist(allnum,casenum)
sinput=sys.stdin.readline()
while讀取直到測資為無
for讀取測資小題第一行變數,迴圈直到那個數字。
def dist(h,num):
distance=0
#排序
for i in range(num):
for j in range(num-i-1):
if h[j]>h[j+1]:
h[j],h[j+1]=h[j+1],h[j]
print(h)
#中位數判斷
nummi=int(num/2)
med=h[nummi-1]
mednx=h[nummi]
#符合中位數條件
if(num%2==0):
ifmed=h[nummi]-h[nummi-1]+1
else:
ifmed=1
#符合中位數
medct=0
for cti in range(num):
if(h[cti]==med):
medct+=1
else:
if(h[cti]==mednx):
medct+=1
print("{0} {1} {2}".format(med,medct,ifmed))
main()
答案分為三個,所以分成三段計算,增加程式易讀性。
這次刷題拿以前的程式碼來改,發現有些地方看起來吃力。
讓我了解到註解重要,近期會在加強這方面知識。
感謝撥冗閱讀