題目鏈結
題目大意:彩虹瓶有n層,必須按照1,2,3…n的順序堆放小球。假設現在需要編號為m的小球,此時送來的恰好是m,則繼續判斷m+1層;若不是,如果此時貨架上有小球,並且頂層就是m號,則繼續判斷m+1層。若不是,如果貨架上還能放小球,則放小球,否則無法成功製作彩虹瓶。
思路:利用堆疊進行模擬。
提交**:
#include
using namespace std;
intmain()
int ok=
1, a=
1,b=1;
stack<
int>s;
while
(a<=n)
elseif(
!s.empty()
&&s.
top(
)==a)
else
if(s.
size()
else}if
(ok)cout<<
"yes"
"no"
<}return0;
}
帶注釋**:
#include
#include
#include
#include
using namespace std;
intmain()
int ok=
1, a=
1,b=1;
stack<
int>s;
//注意b的範圍,凡是用到v[b]的,都得先判斷b的下標
while
(a<=n)
//送來的正好等於需要的
elseif(
!s.empty()
&&s.
top(
)==a)
//棧頂元素正好是所需要的
else
if(s.
size()
//棧沒滿,往棧裡面放
else
//無法按照序列輸出}if
(ok)cout<<
"yes"
"no"
<}return0;
}
L2 032 彩虹瓶 (25 分
彩虹瓶的製作過程 並不 是這樣的 先把一大批空瓶鋪放在裝填場地上,然後按照一定的順序將每種顏色的小球均勻撒到這批瓶子裡。假設彩虹瓶裡要按順序裝 n 種顏色的小球 不妨將順序就編號為 1 到 n 現在工廠裡有每種顏色的小球各一箱,工人需要一箱一箱地將小球從工廠裡搬到裝填場地。如果搬來的這箱小球正好是可...
L2 032 彩虹瓶 25 分
彩虹瓶的製作過程 並不 是這樣的 先把一大批空瓶鋪放在裝填場地上,然後按照一定的順序將每種顏色的小球均勻撒到這批瓶子裡。假設彩虹瓶裡要按順序裝 n 種顏色的小球 不妨將順序就編號為 1 到 n 現在工廠裡有每種顏色的小球各一箱,工人需要一箱一箱地將小球從工廠裡搬到裝填場地。如果搬來的這箱小球正好是可...
L2 032 彩虹瓶 25分
彩虹瓶的製作過程 並不 是這樣的 先把一大批空瓶鋪放在裝填場地上,然後按照一定的順序將每種顏色的小球均勻撒到這批瓶子裡。假設彩虹瓶裡要按順序裝 n 種顏色的小球 不妨將順序就編號為 1 到 n 現在工廠裡有每種顏色的小球各一箱,工人需要一箱一箱地將小球從工廠裡搬到裝填場地。如果搬來的這箱小球正好是可...