問題描述:
火車排程站的入口處有n
節硬席或軟席車廂(以h和
s表示)等待排程,試編寫演算法,輸出對這
n節車廂進行排程的操作(即入棧或出棧操作)序列,使得所有軟席車廂都被調整到硬席車廂之前。
問題分析:
此題主要解決的問題是,不管是入棧還是出棧,軟席車廂要在硬席車廂之前
一開始能想到的效果就是一頭一尾都是軟席,這樣入棧和出棧都使得軟席在硬席之前咯
沒看清題目啊,題目是說要把所有軟席車廂都被調整到硬席車廂之前呢?親啊。
int main()
//這段**時有問題的
c語言知道該怎麼寫了,
得承認寫得少,但是來得及的,你看資料結構可以給你補很多知識。
scanf(「%s
」,buffer);//自己試著多寫寫就是熟悉了。
用c++
是直接這樣寫的
cin>>buffer;
while(buffer[i])
else
push(s,buffer[i]);
i++;
}while(buffer[j])//說實話,我對陣列的使用還不是很清楚,宣告了乙個字元陣列,用得有些彆扭,要多程式設計。
printf(「%s
」,buffer);//各種語言的使用並不可怕,關鍵是程式設計的思想呢?可能這語句有問題,在
c++中是這樣表示的,
cout<
return 0;
}
單調棧的運用
單調棧本質上只是單調遞增或遞減的棧,有點類似於單調佇列,但不同之處在於插入乙個元素時,會彈出棧中 所有不符合單調性的元素 來個例子吧!當乙個單增的棧stack 向其中壓入元素6時,stack 向其中壓入元素2時,stack彈出2,3,4,且stack 向其中壓入0時,stack彈出1,2,3,4,s...
單調棧的運用
題目大意 有一群列隊,面朝右站立的牛,輸入每頭牛的身高,如果視線前方有一頭高於自己的牛,則看不到它之後的牛 求出所有牛能看到頭頂的個數。n方演算法超時,故考慮優化,首先能想到的是,在計算左邊的牛能看到多少牛時,可以利用右邊的結果。棧優化的思路即是,從右向左遍歷牛的身高,同時對棧進行操作 棧中存放牛的...
單調棧的運用
單調棧可以用來是實現在 離線的情況下,o n 的處理出陣列中所有點比某個點小或大最近的距離是多少 具體做法是用棧來維護一邊的點的下表,由於假如ihj 那麼h i 便永無出頭之日 可以把他刪了,而在棧裡能找到的直到第一次出現的小與hi的h j 就一定是最近的,每個點出棧一次,進棧一次,所以時間複雜度是...