關於n列火車的列車排程問題

2021-09-28 23:36:37 字數 723 閱讀 5396

題目

編號為1,2,3,4的四列火車通過乙個棧式的列車排程站,可能得到的排程結果有哪些?如果有n列火車通過排程站,請設計乙個演算法,輸出所有可能的排程結果。

分析棧具有先進後出、後進先出的特點,任何乙個排程結果應該是1,2,3,4全排列中的乙個元素。由於進棧的順序是由小到大的,所以出棧序列應該滿足以下條件:對於序列中的任何乙個數其後面所有比它小的數應該是倒序的,例如4321是乙個有效的出棧序列,1423不是乙個有效的出棧結果(4後面比它小的兩個數2,3不是倒序)。據此,本題可以通過演算法產生n個數的全排列,然後將滿足出棧規則的序列輸出。

**

#include

#include

using

namespace std;

int a[

105]

;int n;

// 判斷是否符合出棧順序

bool

judge()

else

else}}

}}return flag;

}// 產生全排列

void

dfs(

int step)

cout << endl;

return;}

for(

int i = step; i <= n; i++)}

intmain()

dfs(1)

;return0;

}

PTA 7 1 列車廂排程(棧的應用)

題目點我 樣例如圖 1 3軌道都可以看成是棧,不論是1軌還是3軌都應該讓棧頂指向車廂在軌道的移動方向 因為棧的優點是在棧頂插入和刪除元素很方便,反過來的話 寫起來會很麻煩 結合圖和題目要求的輸入,兩個輸入都應該逆序入棧 1.先定義乙個標記int flag 1 假定按輸入的排程方式不會出現問題。當出問...

火車排程問題的回溯法解決

問題描述 火車編號為 1 9,且不重複。如 編號分別為 1 2 3 4 5 的5個火車順序進站,那麼進站序列為 12345 全部進站後再順序出站,則出站序列為 54321 如果先進1,2,然後2出站,然後1出站,然後再3進站 出站,4進站 出站,5進站 出站,那麼出站序列就為21345.詳細描述 i...

關於大整數n!的問題!

對於乙個整數n,當n超過30之後,n!將會是乙個比較大的數,而longlong型別將不能儲存下這麼大的數 這是你只能用到高精度的知識,運用陣列來存放這些數,呵呵!看看下面的例子吧!這是一道求1000!的例子,希望能對你有幫助!include using namespace std int main ...