例題5 2 木塊問題 UVa101

2021-07-24 14:50:59 字數 1383 閱讀 6683

演算法

競賽入門經典(第2版)第5章c++與stl入門 例

題5-2木塊問題

uva101

感悟。

2、借助書中中文才算看懂四條命令的英文表述。

3、結合輸入輸出資料進行模擬,再反覆閱讀輸出部分英文描述,此題基本弄懂。輸出的是經過一系列操作後,每個位置的木塊情況。

4、開始編碼。準備借助書中的不定長陣列vector。不另起爐灶了,不白手起家了。

5、有乙個疑問,程式是處理一次,還是迴圈處理。先按一次來編寫,提交若無法ac,再參考他人**。

6、因每行輸入中涉及數字;每行輸入或是涉及字母、數字及到多個空格的組合。故c中的字元陣列已捉襟見肘,採用c++的string進行嘗試,一切為了簡化**。

7、在搭輸入輸出框架過程中,對string,sstream進一步熟悉了,引以為豪的是接下來這兩句:

stringstream ss(cmd);

ss>>op>>a>>means>>b;//字串解析

8、關於string用法,參考了

9、關於vector用法,參考了

10、按部就班,很快編好程式,稍作除錯,通過測試樣例,在上提交ac,緊接著在上提交ac。看了看時間2016-11-15 15:25

11、放心的掃了一遍書中該題的內容,發現在解析字串上,書中與本人思路基本接近,只是本人兜了個圈。當**量大了後,應該寫函式,而不是所有內容都寫一塊。

附上ac**,編譯環境dev-c++4.9.9.2

#include

#include

#include

#include

#include

using namespace std;//此句要加,否則vector無法識別

const int maxn=30;

vectorv[maxn];

int main()

v[ai].pop_back();

vlen=v[bi].size();

for(j=vlen-1;j>bj;j--)

v[bi].push_back(a);// //向序列為bi的尾部加入a   

}else if(means.compare("over")==0)

v[ai].pop_back();

v[bi].push_back(a);// //向序列為bi的尾部加入a

}}else if(cmd[0]=='p')

vlen=v[ai].size();

for(j=aj;jaj;j--)

v[ai].pop_back();//刪除a

}else if(means.compare("over")==0)

v[ai].pop_back();//刪除a }}

}}//列印

for(i=0;i

uva101 木塊問題

木塊問題,題目 主要是對vector的應用。每個木塊堆的數目是動態變化的,vector陣列比較適用。include include include using namespace std const int maxn 30 int n vector int pile maxn 每個pile i 是乙...

uva 101 木塊問題

題目大意 輸入n,得到編號為0 n 1的木塊,分別擺放在順序排列編號為0 n 1的位置。現對這些木塊進行操作,操作分為四種。1 move a onto b 把木塊a b上的木塊放回各自的原位,再把a放到b上 2 move a over b 把a上的木塊放回各自的原位,再把a發到含b的堆上 3 pil...

UVA 木塊問題 101

uva 木塊問題 101,好開森好開森。雖然花了很長時間,不過能一次就ac也是蠻開心的,用c 寫效率就是不錯 疊木塊其實是乙個二維空間,每個木塊都有縱橫座標 include include includeusing namespace std block用於記錄木塊所在位置,x是位於哪一疊木塊,y是...