77 火車進站

2021-09-10 16:54:38 字數 1252 閱讀 7766

題目描述

給定乙個正整數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...