【鏈表】士兵隊(duì)列訓(xùn)練問題 參考題解
原始題意
????????某部隊(duì)進(jìn)行新兵隊(duì)列訓(xùn)練,將新兵從一開始按順序依次編號,并排成一行橫隊(duì),訓(xùn)練的規(guī)則如下:從頭開始一至二報(bào)數(shù),凡報(bào)到二的出列,剩下的向小序號方向靠攏,再從頭開始進(jìn)行一至三報(bào)數(shù),凡報(bào)到三的出列,剩下的向小序號方向靠攏,繼續(xù)從頭開始進(jìn)行一至二報(bào)數(shù),以此類推,直到剩下的人數(shù)不超過三人為止。
????? ?輸入多個測試數(shù)據(jù)組,第一行為組數(shù) N,接著為 N 行新兵人數(shù),新兵人數(shù)不超過5000人。輸出共有N行,分別對應(yīng)輸入的新兵人數(shù),每行輸出剩下的新兵最初的編號,編號之間有一個空格。
參考樣例

題解報(bào)告
前言:其實(shí)原題是想讓我用隊(duì)列(queue)做的,題目是:【隊(duì)列】士兵隊(duì)列訓(xùn)練問題。但是我發(fā)現(xiàn)吧,鏈表(list)好像更方(偷)便(懶)【滑稽
代碼中有用到這么一處:list<int> l1.?一步步看,list 指的是數(shù)據(jù)結(jié)構(gòu)——鏈表,中間 <int> 指的是鏈表保存的數(shù)據(jù),和 queue(隊(duì)列)、stack(棧)很像。
還有一點(diǎn):list<int>::iterator it. 后面的兩個冒號,意思是:什么什么的。比如,std::cout、std::cin 都是表示 std(標(biāo)準(zhǔn)命名空間)的 cin、cout. 最后的 iterator?為迭代器,何為迭代器?
An iterator is any object that, pointing to some element in a range of elements (such as an array or a container), has the ability to iterate through the elements of that range using a set of operators (with at least the increment (++) and dereference (*) operators).
迭代器是指任何指向某個范圍內(nèi)(如數(shù)組或容器)中的某個元素的對象,能夠使用操作符(至少使用遞增(++)和指針(*)操作符)迭代該范圍內(nèi)的元素。
????????迭代器和?C++?的指針非常類似,它可以是需要的任意類型,通過迭代器可以指向容器中的某個元素,如果需要,還可以對該元素進(jìn)行讀或?qū)懖僮鳌?/p>
????????說了這么多,還是看看迭代器具體的使用吧,注釋都寫在代碼里了!
預(yù)告:下一期講Noip2002知名例題:均分紙牌
預(yù)告2:點(diǎn)贊過66出坤坤鬼畜
點(diǎn)個贊,投個幣(電腦版),收個藏吧,謝謝啦!
E N D
