棧 火車排程

2021-07-12 03:39:28 字數 1331 閱讀 9117

乙個火車排程站的容量為n,若入站口有編號為1、2、…、n的n節車廂,編寫演算法輸出n節車廂的所有出站序列。用回溯法設計該問題的遞迴演算法,

排程站當前狀態下,只有兩種操作:

(1)若入站口車廂非空,則將入站口的k號車廂入棧,進入下乙個狀態繼續試探(遞迴呼叫);

(2)若排程站非空,則將棧頂車廂出棧進入出站序列,進入下乙個狀態繼續試探(遞迴呼叫);

#include 

#include

#include

using

namespace

std;

void schedule(vector

&a, stack

&b, vector

&c, int sizec, int starta, int &n)

if(!b.empty())//如果排程站種有列車,出站

if(starta < a.size())//如果排程站外還有列車沒排程,進站

}int main()

2、判斷序列合法性

#include

#include

#include

#include

using

namespace

std;

bool check(stack

& s, const

vector

& in, const

vector

& out, int n)

}//如果當前棧不為空,那麼確定該組值不合法。

if(s.empty())

return

true;

else

return

false;

}int main(int argc, char **argv)

if(check(s, in, out, n))

cout

<< "yes"

<< endl;

else

cout

<< "no"

<< endl;}}

system("pause");

return

0;}

3、

#include

#include

using

namespace

std;

int main()

if(j==k&&k==n-2)

if(j==k)

}} if(hold==true)

}} return

0;}

火車站排程問題

題目要求 1.問題 一列火車要將n節車廂分別送往n個車站,車站按照n,n 1,1的編號次序經過車站。假設車廂的編號就是其目的地車站的編號。2.要求 給定乙個任意的車廂排列次序。重新排列車廂,使其按照從1到n的次序排列。規定重排排程時車廂只能從入軌到緩衝鐵軌,或者從緩衝鐵軌到出軌。include in...

火車進棧 dfs

題目描述 這裡有n列火車將要進站再出站 但是,每列火車只有1節 那就是車頭 描述有n列火車按1到n的順序從東方左轉進站,這個車站是南北方向的,它雖然無限長,只可惜是乙個死胡同,而且站台只有一條股道,火車只能倒著從西方出去,而且每列火車必須進站,先進後出。某生 不就是個棧嗎?每次可以讓右側頭火車進棧,...

火車進棧(DFS

這裡有n列火車將要進站再出站,但是,每列火車只有1節,那就是車頭。這n列火車按1到n的順序從東方左轉進站,這個車站是南北方向的,它雖然無限長,只可惜是乙個死胡同,而且站台只有一條股道,火車只能倒著從西方出去,而且每列火車必須進站,先進後出。也就是說這個火車站其實就相當於乙個棧,每次可以讓右側頭火車進...