科大訊飛-筆試程式設計-殺手
阿新 • • 發佈:2018-12-03
殺手
時間限制:C/C++語言 1000MS;其他語言 3000MS 記憶體限制:C/C++語言 65536KB;其他語言 589824KB
題目描述:
有n個殺手排成一行,每個殺手都有一個不同的編號(編號為1-n),在每個夜晚,殺手都會行動,如果某個殺手編號大於他右邊的殺手的編號,他就會殺死他右邊的殺手,殺手是的行動是瞬間的,因此一個人可能某一個夜晚既殺死了別人又被別人殺死,例如3,2,1這個順序,在第一個夜晚2會殺死1,同時3也會殺死2。
顯而易見,一段時間之後,就不會有人殺或被殺,平安夜也就到來了,請問在平安夜之前有多少個夜晚。
輸入
輸入第一行是一個整數n(1≤n≤100000),表示殺手的數量。
接下來一行有n個數,是一個1-n的全排列。
輸出
輸出包含一個整數,表示平安夜之前經歷了多少個夜晚。
樣例輸入
10
10 9 7 8 6 5 3 4 2 1
樣例輸出
2
Hint
補充樣例 輸入樣例2 6 1 2 3 4 5 6 輸出樣例2 0 樣例解釋: 樣例1中殺手的變化為[10 9 7 8 6 5 3 4 2 1]->[10 8 4]->[10],故答案為2。
x = input() a = list(map(int,input().split())) def shashou(a): b = [a[0]] for i in range(len(a)-1): if a[i] < a[i+1]: b.append(a[i+1]) return b n = 0 flag = True while flag == True: if a != shashou(a): a = shashou(a) n = n+1 flag = True else: flag = False print(n)
程式設計能力很弱,如若有錯,請指正,共同學習,謝謝!