1. 入棧順序是1234,出棧序列有哪幾種
4個元素的全排列共有24種,棧要求符合後進先出,按此衡量排除後即得:
1234√,1243√,1324√,1342√,1423×,1432√,2134√,2143√,2314√ ,2341√,
2413×,2431√,3124×,3142×,3214√,3241√,3412×,3421√,4123×,4132×,
4213×,4231×,4312×,4321√。
14種可能,10種不可能。
(1)python進棧順序出棧幾種擴展閱讀
棧的典型應用有算術表達式的檢查和背包問題等,實際上,凡屬符合後進先出原則的問題,都可以用棧來處理。
1、算術表達式中括弧作用域合法性的檢查
括弧作用域的檢查是棧的典型實例。檢查一個算術表達式中使用的括弧是否正確,應從下面兩個方面考慮:
1)左右括弧的數目應該相等;
2)每一個左括弧都一定有一個右括弧與之匹配。
演算法思想:括弧作用域檢查的原則是,對表達式從左到右掃描。當遇到左括弧時,左括弧入棧;當遇到右括弧時,首先將棧頂元素彈出棧,再比較彈出元素是否與右括弧匹配,若匹配,則操作繼續;否則,查出錯誤,並停止操作。
2、背包問題
問題:假設有n件質量分配為w1,w2,...,wn的物品和一個最多能裝載總質量為T的背包,能否從這n件物品中選擇若干件物品裝入背包,使得被選物品的總質量恰好等於背包所能裝載的最大質量,即wi1+wi2+...+wik=T。若能,則背包問題有解,否則無解。
演算法思想:首先將n件物品排成一列,依次選取;若裝入某件物品後,背包內物品的總質量不超過背包最大裝載質量時,則裝入(進棧);否則放棄這件物品的選擇,選擇下一件物品試探,直至裝入的物品總和正好是背包的最大轉載質量為止。這時我們稱背包裝滿。
若裝入若干物品的背包沒有滿,而且又無其他物品可以選入背包,說明已裝入背包的物品中有不合格者,需從背包中取出最後裝入的物品(退棧),然後在未裝入的物品中挑選,重復此過程,直至裝滿背包(有解),或無物品可選(無解)為止。
具體實現:設用數組weight[1..N],stack[1,N]分別存放物品重量和已經裝入背包(棧)的物品序號,MaxW表示背包的最大裝載量。每進棧一個物品,就從MaxW中減去該物品的質量,設i為待選物品序號。
若MaxW-weight[i]>=0,則該物品可選;若MaxW-weight[i] < 0,則該物品不可選,且若i>n,則需退棧,若此時棧空,則說明無解。