• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            f(sixleaves) = sixleaves

            重劍無(wú)鋒 大巧不工

              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              95 隨筆 :: 0 文章 :: 7 評(píng)論 :: 0 Trackbacks
            這是一道很好的模擬題,用vector<int> p[maxn],建立模型,映射為maxn個(gè)堆。主要要掌握vector模擬堆操作的簡(jiǎn)單方法。
            接下來(lái)得思路是自頂向下的方式,逐步完善程序。首先根據(jù)提議列出下表。
            1.move a onto b
            clear_above(a) && clear_above(b);
            insert a above b;

            2.move a over b
            clear(a)
            insert a above bs

            3.pile a onto b
            clear(b)
            insert as above b

            4.pile a over b
            insert as above bs

            觀(guān)察可以提取出move的話(huà)必有clear_above(a)、onto必有clear_above(b).
            而insert 動(dòng)作不管b是在p[b]的頂部還是外部。都是p[b].push_back(a或a以上的木塊)
            所以可以抽取成pile_into(pa, ha, pb);

            考慮完這些,開(kāi)始寫(xiě)框架。如下
             1 
             2 #include <cstdio>
             3 #include <iostream>
             4 #include <string>
             5 #include <vector>
             6 using namespace std;
             7 
             8 const int maxn = 64;
             9 int n;
            10 vector<int> a[maxn];
            11 int find_block(int a, int& h);
            12 void clear_above(int p, int h);
            13 void pile_into(int pa, int ha, int pb);
            14 void print();
            15 int main() {
            16 
            17     
            18     
            19     string s1, s2;
            20     scanf("%d", &n);
            21     for (int i = 0; i < n ; i++) {
            22         a[i].push_back(i);
            23     }
            24     
            25     while (cin >> s1, s1 != "quit") {
            26         int ba,bb;
            27         cin >> ba >> s2 >> bb;
            28         int ha = 0,hb = 0;
            29         int pa = find_block(ba, ha);
            30         int pb = find_block(bb, hb);
            31         if (pa == pb) continue;
            32         
            33         if (s1 == "move") clear_above(pa, ha);
            34         if (s2 == "onto") clear_above(pb, hb);
            35         pile_into(pa, ha, pb);
            36     }
            37     
            38     print();
            39     return 0;
            40 }
             
            接下來(lái),完成程序其它部分,按照框架的意思,逐步完善。如下
             1 void print() {
             2     
             3     for (int i = 0; i < n; i++) {
             4         printf("%d:",i);
             5         for (int h = 0; h < a[i].size(); h++) {
             6             printf(" %d", a[i][h]);
             7         }
             8         printf("\n");
             9     }
            10 }
            11 
            12 int find_block(int ba, int& h) { 
            13     
            14     for (int i = 0; i < n; i++) {
            15         
            16         int vec_size = a[i].size();
            17         for (h = 0; h < vec_size; h++) {
            18             if (ba == a[i][h]) return i;
            19         }
            20         
            21     }
            22     return -1;
            23 }
            24 
            25 void clear_above(int p, int h) {
            26     int vec_size = a[p].size();
            27     for (int i = h + 1; i < vec_size; i++) {
            28         
            29         int b = a[p][i];
            30         a[b].push_back(b);
            31         
            32     }
            33     a[p].resize(h + 1);
            34 }
            35 
            36 void pile_into(int pa, int ha, int pb) {
            37     
            38     int vec_size = a[pa].size();
            39     
            40     for (int i = ha; i < vec_size; i++) {
            41         a[pb].push_back(a[pa][i]);
            42     }
            43     a[pa].resize(ha);
            44 }
            posted on 2015-03-16 15:03 swp 閱讀(213) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): algorithm
            久久天天躁夜夜躁狠狠| 久久久99精品一区二区| 亚洲国产小视频精品久久久三级 | 亚洲精品无码久久久久久| 欧洲精品久久久av无码电影| 中文字幕一区二区三区久久网站| 亚洲精品国产第一综合99久久| 久久青青草原亚洲av无码app| 久久久精品久久久久久| 久久亚洲国产精品成人AV秋霞| 99久久伊人精品综合观看| 亚洲欧美日韩中文久久| 91久久精品无码一区二区毛片| 久久久无码精品亚洲日韩蜜臀浪潮| 国产精品99久久免费观看| 伊人久久久AV老熟妇色| 热99RE久久精品这里都是精品免费| 久久亚洲美女精品国产精品| 香蕉99久久国产综合精品宅男自| 久久综合狠狠综合久久激情 | 99精品久久久久久久婷婷| 亚洲欧美成人久久综合中文网 | 久久香综合精品久久伊人| 尹人香蕉久久99天天拍| 伊人久久大香线蕉成人| 色欲综合久久躁天天躁蜜桃| 久久er热视频在这里精品| 品成人欧美大片久久国产欧美...| 久久久久九九精品影院| 99久久免费国产精精品| 中文成人无码精品久久久不卡 | 国产成人精品久久| 国产叼嘿久久精品久久| 91精品国产综合久久精品| 久久精品国产99国产精品亚洲 | 久久综合亚洲欧美成人| 一本久久a久久精品综合香蕉| 欧美久久综合九色综合| 久久久99精品一区二区| 久久午夜福利电影| 欧美伊人久久大香线蕉综合69 |