一眼(萬年)貪心
minn設小調不出來祭
首先要保證更靠前的輸出更小
那麼容易想到,對於之後可能入棧的元素(即棧的剩餘空間仍能裝下的所有元素),我們可以取其中的最小值minn,和棧頂元素$top$比較
,如果minn
否則一直彈出棧頂直到棧空或top>minn
#include#include#include
using
namespace
std;
const
int maxn=10010
;int
n,c,a[maxn],rest,pos;
stack
st;intmain()
if(st.empty()||minn//
棧為空或最小值小於棧頂元素值,就將最小元素前的元素全部入棧
}while(!st.empty())
printf("\n
");return0;
}
P1750 出棧序列
題目描述 給定乙個由n個元素構成的序列,你需要將其中的元素按順序壓入乙個大小為c的棧並彈出。元素按它們的出棧順序進行排列,會得到乙個新的序列。我們知道,這樣的序列會有很多種,請輸出所有新序列中第乙個元素最小的序列 若第乙個元素最小的序列有多個,則令第二個盡可能小 若仍有多個,則令第三個最小,以此類推...
棧(出棧序列)
已知自然數1,2,n 1 n 10000 依次入棧 即a1 c2,cn 是否為可能的出棧序列。例如 n 5時,3,4,2,1,5是乙個可能的出棧序列,因為其可以按如下操作獲得 push 1,push 2,push 3,pop,push 4,pop,pop,pop,push 5,pop input 輸...
棧 出棧序列判定
給乙個初始的入棧序列,其次序即為元素的入棧次序,棧頂元素可以隨時出棧,每個元素只能入棧依次。輸入乙個入棧序列,後面依次輸入多個序列,請判斷這些序列是否為所給入棧序列合法的出棧序列。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個出棧序列,但4,3,5,1,2就...