題目描述
給定乙個正整數n代表火車數量,0輸出描述:
輸出以字典序從小到大排序的火車出站序列號,每個編號以空格隔開,每個輸出序列換行,具體見sample。
示例1輸入
31 2 3
輸出1 2 3
1 3 2
2 1 3
2 3 1
3 2 1
此處所謂字典序排序的意思是這n輛火車有多少種出站的可能順序(也就是資料結構中的棧有多少種出棧順序)。
思路為用三個變數分別儲存待進站火車,站中火車和已出站火車,其中待進站火車用queue(佇列)儲存和站中
火車採用stack(棧)儲存,已出站火車採用stringbuilder來儲存,具體實現是採用遞迴的方法,遞迴函式的引數為當前待進站火車、站中火車、已出站火車的值所組成的三元組,遞迴結束條件是,未進站火車和站中火車均為空,此時輸出已出站火車即為所有出站的一種可能,遞推關係為對於當前情況有讓下一輛火車進站或讓站 中的一輛火車出站兩種可能,對於兩種可能分別呼叫遞迴函式,即可得出問題的解。
def handle(prestation,instation,outstation):
if not prestation and not instation:#全部出棧
if instation:#先出棧
temp_pre=prestation[:]
temp_in=instation[:]
temp_out=outstation[:]
handle(temp_pre,temp_in,temp_out)
if prestation:#再入棧
temp_pre = prestation[:]
temp_in = instation[:]
temp_out = outstation[:]
handle(temp_pre,temp_in,temp_out)
return result
while true:
try:
m=int(input())
prestation=input().split()
instation=
outstation=
result=
handle(prestation,instation,outstation)
result.sort()#按字典序輸出
for i in result:
print(i)
except:
break
火車進站問題
給定乙個正整數n代表火車數量,0 比如火車進站 序列問題 c include include include include using std stack using std vector using namespace std bool ispoporder const int put orde...
火車進站問題
描述 給定乙個正整數n代表火車數量,0 知識點棧 執行時間限制 0m記憶體限制0輸入 有多組測試用例,每一組第一行輸入乙個正整數n 0 輸出輸出以字典序排序的火車出站序列號,每個編號以空格隔開,每個輸出序列換行,具體見sample。樣例輸入 31 2 3 樣例輸出 1 2 3 1 3 2 2 1 3...
火車進站 ACM
給定乙個正整數n代表火車數量,0有多組測試用例,每一組第一行輸入乙個正整數n 0輸出以字典序從小到大排序的火車出站序列號,每個編號以空格隔開,每個輸出序列換行,具體見sample。示例13 1 2 31 2 3 1 3 2 2 1 3 2 3 1 3 2 1 include include incl...