• <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 閱讀(925) 評論(0)  編輯 收藏 引用 所屬分類: 數據結構

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

            導航

            統計

            公告

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            me

            好友

            同學

            網友

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            久久久久久久久久久| 91精品国产高清91久久久久久| 国产精品久久久久…| 亚洲美日韩Av中文字幕无码久久久妻妇 | 久久99精品国产麻豆| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 久久久无码一区二区三区| 狠狠色丁香婷婷久久综合五月 | 国产999精品久久久久久| 亚洲午夜无码AV毛片久久| 99久久精品国产毛片| 人妻少妇精品久久| 久久99精品九九九久久婷婷| 久久精品国产网红主播| 亚洲精品无码久久久影院相关影片| 久久天堂电影网| 伊人色综合久久天天| 久久福利青草精品资源站免费| 99精品国产在热久久无毒不卡 | 亚洲精品无码久久久久久| 欧美色综合久久久久久| 最新久久免费视频| 久久青青草原精品国产| 午夜精品久久久久久99热| 久久综合久久自在自线精品自| 亚洲国产精品无码久久一区二区| 久久精品国产久精国产思思| 久久香蕉综合色一综合色88| 青青草原综合久久| 国产精品乱码久久久久久软件| 久久婷婷色综合一区二区| 国产精品免费久久久久电影网| 国产精品久久久久久久午夜片| 成人久久免费网站| 久久久久久无码国产精品中文字幕 | 久久综合狠狠综合久久97色| 久久久久亚洲AV片无码下载蜜桃| 久久99国产一区二区三区| 香蕉久久一区二区不卡无毒影院 | 99久久伊人精品综合观看| 97久久精品午夜一区二区|