• <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>

            uva 10562 - Undraw the Trees

               這是一個貌似很麻煩的題,題目要求是將一顆用ascii碼繪畫出來的樹,轉換為其一種字符串表示,這種字符串表示好像是叫做什么廣義表
            什么的。
               比如,
                  A

                |

            --------

            B  C   D

               |   |

             ----- -

             E   F G 對應的字符串表示 (A(B()C(E()F())D(G())))

               
               比較糾結的是如何讀取數據,如何遞歸,如果建立樹的話,也麻煩,因為還是顆不定叉的樹。最主要的是如何方便地遞歸。最后知道了一個
            比較巧妙的方法,先一次性把一組數據讀入字符串數組里面,再在這個字符串數組上進行遞歸處理。這樣的話,就能很方便的找到樹里面節點
            的關系了。
               而一次讀一個字符就想進行遞歸是沒辦法確定節點的關系的,不遞歸估計更很難寫,完全沒頭緒。。。

            代碼如下:
             1 #include <stdio.h>
             2 #include <string.h>
             3 
             4 char szLines[210][210];
             5 int nNumOfLine;
             6 
             7 void GetAns(int i, int j)
             8 {
             9     //printf("i:%d, j:%d, %c\n", i, j, szLines[i][j]);
            10     
            11     if (szLines[i][j] != '\0')
            12     {
            13         putchar(szLines[i][j]);
            14         //printf("%c", szLines[i + 1][j]);
            15         if (szLines[i + 1][j] == '|')
            16         {
            17             int nBeg, nEnd;
            18             nBeg = nEnd = j;
            19             while (nBeg >= 0 && szLines[i + 2][nBeg] == '-')
            20             {
            21                 --nBeg;
            22             }
            23             while (szLines[i + 2][nEnd] == '-')
            24             {
            25                 ++nEnd;
            26             }
            27             //printf("nBeg:%d, nEnd:%d\n", nBeg, nEnd);
            28             putchar('(');
            29             for (int k = nBeg; k <= nEnd; ++k)
            30             {
            31                 if (szLines[i + 3][k] != ' ' && szLines[i + 3][k] != '\0')
            32                 {
            33                     GetAns(i + 3, k);
            34                 }
            35             }
            36             putchar(')');
            37         }
            38         else
            39         {
            40             printf("()");
            41         }
            42     }
            43     
            44 }
            45 
            46 int main()
            47 {
            48     int nN;
            49     char ch;
            50 
            51     scanf("%d", &nN);
            52     getchar();
            53     while (nN--)
            54     {
            55         nNumOfLine = 0;
            56         memset(szLines, 0, sizeof(szLines));
            57         while (gets(szLines[nNumOfLine]), szLines[nNumOfLine][0] != '#')
            58         {
            59             //printf("%s\n", szLines[nNumOfLine]);
            60             nNumOfLine++;
            61         }
            62         if (nNumOfLine == 0)
            63         {
            64             printf("()\n");
            65             continue;
            66         }
            67         int i, j;
            68         i = 0;
            69         for (j = 0; szLines[0][j] == ' '; ++j);
            70         //printf("i:%d, j:%d\n", i, j);
            71         putchar('(');
            72         GetAns(i, j);
            73         putchar(')');
            74         putchar('\n');
            75     }
            76     
            77     return 0;
            78 }
            79 

            posted on 2012-07-10 21:35 yx 閱讀(915) 評論(0)  編輯 收藏 引用 所屬分類: 數據結構

            <2012年9月>
            2627282930311
            2345678
            9101112131415
            16171819202122
            23242526272829
            30123456

            導航

            統計

            公告

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            me

            好友

            同學

            網友

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            欧美久久一级内射wwwwww.| 久久久受www免费人成| 色综合久久无码五十路人妻| 看久久久久久a级毛片| 美女写真久久影院| 香港aa三级久久三级老师2021国产三级精品三级在 | 97久久精品午夜一区二区| 草草久久久无码国产专区| 日韩人妻无码一区二区三区久久99| 婷婷五月深深久久精品| 久久久久亚洲av成人无码电影| 77777亚洲午夜久久多人| 丁香久久婷婷国产午夜视频| 久久婷婷五月综合色奶水99啪| 久久久久中文字幕| 久久人人爽人人爽人人片AV不| 国产午夜福利精品久久| 久久亚洲AV成人出白浆无码国产 | 香蕉久久久久久狠狠色| 国产高潮国产高潮久久久| 无码人妻少妇久久中文字幕| 一本一道久久精品综合| 色欲久久久天天天综合网精品| 久久亚洲2019中文字幕| 国产成人无码精品久久久免费 | 成人午夜精品无码区久久| 精品国产婷婷久久久| 99精品久久精品| 2021精品国产综合久久| 亚洲国产精品无码久久| 囯产精品久久久久久久久蜜桃| 要久久爱在线免费观看| 久久夜色精品国产| 办公室久久精品| 品成人欧美大片久久国产欧美... 品成人欧美大片久久国产欧美 | 久久精品无码一区二区无码| 亚洲日本va中文字幕久久| 嫩草伊人久久精品少妇AV| 色欲综合久久躁天天躁蜜桃| AV无码久久久久不卡网站下载| 国产三级久久久精品麻豆三级|