演算法
競賽入門經典(第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是...