作業五
Jump to Section
說明:
輸入說明
共一行,該行包含 $N$ 個數字 $C_0 \dots C_{N_1}$ ,$1 \leq N \le 20$ ,代表目前序列中的車輛編號,每個編號間一個空白相隔。 保證 $C_0 \dots C_{N-1}$ 由不重複之連續正整數組成,且最小車輛編號必定為 $1$ 。
輸出說明
針對每筆測資,請輸出 success 或 fail,代表當前順序是否可以讓所有人平安離開停車場。
成品及時展示:
主要程式
import requests
ret = requests.get('https://gist.githubusercontent.com/CloudeWu/beafd531151dc9938f3b3c4f16285b1d/raw/a5dd4cd8cb3b168fce275c33fe1ed51c007ad9d1/HW6_%25E6%25B8%25AC%25E8%25B3%2587.txt')
if not ret.ok:
print('網路好像有點問題,晚點再試試看!')
else:
testcases = [ [int(char) for char in line.split(' ')] for line in ret.text.split('\n')]
#params
printOutDetail = False
testCase = 2
def printDetail(text):
global printOutDetail
if printOutDetail:
print(text)
testData = testcases[testCase-1].copy()
parking = []
outside = []
state = 2
newItem = 0
lowest = min(testData)
while ((len(parking) != 0 or len(testData) != 0) and state == 2):
if len(testData) == newItem and len(parking) == 0:
state = 1
if len(parking) and parking[-1] == lowest:
outside.append(parking[-1])
printDetail(str(parking[-1])+" 號從停車場離開")
lowest += 1
parking.pop()
elif len(testData) > newItem and testData[newItem] == lowest:
outside.append(testData[newItem])
printDetail(str(testData[newItem])+" 號直接離開")
lowest += 1
newItem += 1
elif len(testData) > newItem:
if len(parking) and min(parking) <= testData[newItem]:
state = 0
parking.append(testData[newItem])
printDetail(str(testData[newItem])+" 號進入停車場")
newItem += 1
if state == 0:
print("fail")
else:
print("success")