5-2 木塊問(wèn)題

因?yàn)榭床欢畇tl的東西 所以為了熟悉語(yǔ)法 就模仿(chaoxi)書上的思路 熟悉了一遍語(yǔ)法 但是令人尷尬的是 即使是抄 我也抄錯(cuò)了...好在是為了熟悉語(yǔ)法 能不能跑無(wú)所謂(嗯袖肥。卧土。缠局。)

例題:
http://acm.hust.edu.cn/vjudge/contest/128220#problem/B
輸入n,得到編號(hào)為0n-1的木塊差凹,分別擺放在順序排列編號(hào)為0n-1的位置。現(xiàn)對(duì)這些木塊進(jìn)行操作,操作分為四種曙强。
1福稳、move a onto b:把木塊a涎拉、b上的木塊放回各自的原位,再把a(bǔ)放到b上的圆;
2鼓拧、move a over b:把a(bǔ)上的木塊放回各自的原位,再把a(bǔ)發(fā)到含b的堆上越妈;
3季俩、pile a onto b:把b上的木塊放回各自的原位,再把a(bǔ)連同a上的木塊移到b上梅掠;
4酌住、pile a over b:把a(bǔ)連同a上木塊移到含b的堆上。
當(dāng)輸入quit時(shí)瓤檐,結(jié)束操作并輸出0~n-1的位置上的木塊情況

抄的過(guò)程中 也發(fā)現(xiàn)了不少問(wèn)題
1 vector<int>pile[maxn]; 類似于創(chuàng)建了一個(gè)確定行數(shù) 不確定列數(shù)的二維數(shù)組 而且每一列可不同和
2 vector<int> a;
for(int i=0;i<10;i++)
a[i]=i;
//這種做法以及類似的做法都是錯(cuò)誤的 下標(biāo)只能用于獲取已存在的元素赂韵,而現(xiàn)在的a[i]還是空的對(duì)象
3 也許是處于空間的考慮 每一次做完一個(gè)部分 便把vector的空間壓縮到剛剛好大//不不不這里理解錯(cuò)了 是移動(dòng)完把原來(lái)刪除了
4 不要讓main里過(guò)于冗長(zhǎng) 用函數(shù)替代那些重復(fù)的部分
5 vector之間互為“一等公民”
6 int& p 作為參數(shù)傳入函數(shù)類似于指針
7 關(guān)于本題
(1) 有許多重復(fù)性操作 用函數(shù) 且onto操作先于move
(2) pa == pb 為非法指令(與其他操作矛盾或者說(shuō)是多余無(wú)用的操作)
(3) 思路:
先進(jìn)行輸入 再找a,b的位置 再以ab的位置為基礎(chǔ) 進(jìn)行移動(dòng) 最后輸出即可
以下是源代碼

#include<vector>
#include<iostream>
#include<string>
#include<cstdio>
using namespace std;

int n;
const int maxn = 30;
vector<int>pile[maxn];

void found(int ch,int & p,int& h);//找位置 
void back_(int p,int h);//放回 
void pile_over(int p,int h,int p2);//最后的移動(dòng) 

int main(){
    int a,b;
    string s1,s2;
    cin>>n;//輸入有幾堆 
    for(int i = 0; i < n; i++)//在第i堆輸入i【0】【0】   【1】【0】 【2】【0】...【n-1】【0】 
        pile[i].push_back(i);
    while(cin>>s1>>a>>s2>>b){
        int pa,pb,ha,hb;
        found(a,pa,ha);
        found(b,pb,hb);
        if(pa == pb) continue;
        if(s2 == "onto") back_(pb,hb);
        if(s1 == "move") back_(pa,ha);
        pile_over(pa,pb,ha);
        }
        for(int i = 0; i < n ; i++){
            printf("%d: ", i);
            for(int j = 0; j < pile[i].size(); i++){
                printf("%d ", pile[i][j]);
            }
            printf("\n");
    }
    return 0;
}

void found(int ch,int &p,int &h){
    for(p = 0; p < n; p++)
        for(h = 0; h < pile[p].size(); h++)
            if(pile[p][h] == ch) return;
}

void back_(int p,int h){//也可以倒著挠蛉,先將最后一個(gè)移回祭示,再刪除該堆最后一個(gè)元素 
    for(int i = h+1 ; i < pile[p].size(); i++){
        int b = pile[p][i];
        pile[b].push_back(b);//如果該堆沒(méi)有該元素,那么該堆一定沒(méi)有元素 
    }
    pile[p].resize(h+1); 
}

void pile_over(int p,int h,int p2){
    for(int i = h ; i < pile[p].size(); i++)
        pile[p2].push_back(pile[p][i]);
    pile[p].resize(h);
}

第一次復(fù)習(xí):思路還是在的,先找出所輸入木塊的位置质涛,再將重復(fù)性操作按一定的順序?qū)懖懗龊瘮?shù) 最后輸出

但是 再具體實(shí)現(xiàn)的時(shí)候還是一籌莫展
1 如何找到標(biāo)記稠歉? 遍歷數(shù)組找到x 并用.size()計(jì)算出y即高度
2 類似指針的方式傳入變量
3 順序?onto==move>pile
4 如何移動(dòng)汇陆? 木塊的序號(hào)和所在位置相同 用找到的位置下標(biāo)賦值回各容器 然后直接改變?nèi)萜鞔笮?取消那些被移動(dòng)的位置

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末怒炸,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子毡代,更是在濱河造成了極大的恐慌阅羹,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件教寂,死亡現(xiàn)場(chǎng)離奇詭異捏鱼,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)酪耕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門导梆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人迂烁,你說(shuō)我怎么就攤上這事看尼。” “怎么了盟步?”我有些...
    開封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵藏斩,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我址芯,道長(zhǎng)灾茁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任谷炸,我火速辦了婚禮北专,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘旬陡。我一直安慰自己拓颓,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開白布描孟。 她就那樣靜靜地躺著驶睦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪匿醒。 梳的紋絲不亂的頭發(fā)上场航,一...
    開封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天,我揣著相機(jī)與錄音廉羔,去河邊找鬼溉痢。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的孩饼。 我是一名探鬼主播髓削,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼镀娶!你這毒婦竟也來(lái)了立膛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤梯码,失蹤者是張志新(化名)和其女友劉穎宝泵,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體忍些,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鲁猩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了罢坝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡搅窿,死狀恐怖嘁酿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情男应,我是刑警寧澤闹司,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站沐飘,受9級(jí)特大地震影響游桩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜耐朴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一借卧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧筛峭,春花似錦铐刘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至挂签,卻和暖如春疤祭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背饵婆。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工勺馆, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓谓传,卻偏偏與公主長(zhǎng)得像蜈项,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子续挟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問(wèn)題, 分享了一些自己做題目的經(jīng)驗(yàn)紧卒。 張土汪:刷leetcod...
    土汪閱讀 12,748評(píng)論 0 33
  • 前段時(shí)間因?yàn)樵谕庥行┦滦枰恍┵Y金,我不想打電話麻煩家人诗祸,便打了一圈電話問(wèn)身邊的朋友跑芳,然后我發(fā)現(xiàn)他們竟然每一個(gè)都有...
    蕭宜閱讀 2,009評(píng)論 0 1
  • 從畢業(yè)功偿,到工作盆佣,誰(shuí)都會(huì)有上班的時(shí)候,有上班就會(huì)有面試械荷,有面試就會(huì)有各種各樣好玩共耍、又很刺激的事情。想一想吨瞎,自己畢業(yè)已...
    劉小松閱讀 273評(píng)論 0 0
  • 職場(chǎng)女主銷售工作外痹兜,多數(shù)都是面對(duì)電腦久坐,每天至少上班八個(gè)小時(shí)颤诀,甚至更長(zhǎng)時(shí)間字旭。 電腦有輻射,長(zhǎng)期面對(duì)一放眼疲勞容易...
    駿馬背上的小雨燕閱讀 265評(píng)論 0 0
  • 版本記錄 前言 ios中有好幾種鎖崖叫,比如自旋鎖遗淳,互斥鎖,信號(hào)量等等归露,鎖其實(shí)是多線程數(shù)據(jù)安全的一種解決方案洲脂,作用就是...
    刀客傳奇閱讀 984評(píng)論 0 1