• <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年5月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導航

            統計

            公告

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            me

            好友

            同學

            網友

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            久久精品夜夜夜夜夜久久| 亚洲欧美成人久久综合中文网| 色妞色综合久久夜夜| 91精品国产高清久久久久久io | 久久九九久精品国产免费直播| 亚洲国产成人乱码精品女人久久久不卡| 久久99精品国产一区二区三区| 日韩十八禁一区二区久久 | 久久久国产99久久国产一| 久久久久高潮毛片免费全部播放 | 色婷婷综合久久久久中文字幕| 久久香综合精品久久伊人| 久久久久久亚洲精品不卡| 久久精品国产网红主播| 久久综合视频网站| 99久久国产免费福利| 无码久久精品国产亚洲Av影片 | 久久天天躁狠狠躁夜夜躁2O2O| 久久99精品久久久久久噜噜| 国产综合久久久久久鬼色| 亚洲午夜久久久久久久久久| 久久夜色撩人精品国产小说| 国产福利电影一区二区三区,免费久久久久久久精 | 亚洲欧洲久久av| 国产成人久久精品麻豆一区| 久久综合88熟人妻| 国产A三级久久精品| 色诱久久av| 久久久无码精品午夜| 99热都是精品久久久久久| 99久久久国产精品免费无卡顿| 亚洲中文字幕无码久久精品1| 伊人久久无码精品中文字幕| 欧洲国产伦久久久久久久| 久久久久免费视频| 久久久久久亚洲精品无码| 欧美久久天天综合香蕉伊| 亚洲国产精品无码久久青草 | 亚洲成av人片不卡无码久久| 中文字幕无码av激情不卡久久| 亚洲国产成人久久一区久久|