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

            <2012年5月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導航

            統計

            公告

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            me

            好友

            同學

            網友

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            久久久久香蕉视频| 久久综合久久综合久久| 久久久久亚洲AV无码专区首JN | 久久996热精品xxxx| 午夜精品久久久久久| 久久人妻AV中文字幕| 国产欧美久久久精品| 久久精品亚洲福利| 久久精品中文騷妇女内射| 国产精品丝袜久久久久久不卡| 97久久国产综合精品女不卡| 99久久精品国产毛片| 亚洲国产精品18久久久久久| 久久综合色区| 亚洲伊人久久大香线蕉苏妲己| 久久久噜噜噜久久熟女AA片| 中文成人久久久久影院免费观看| 久久久精品免费国产四虎| 亚洲熟妇无码另类久久久| 久久久99精品一区二区| 青青草原综合久久| www.久久热.com| 久久精品亚洲一区二区三区浴池| 日本高清无卡码一区二区久久| 久久精品一区二区国产| 99久久精品费精品国产一区二区| 久久亚洲精品中文字幕| 99精品国产综合久久久久五月天| 久久午夜福利电影| 久久久91人妻无码精品蜜桃HD| Xx性欧美肥妇精品久久久久久| 99久久精品费精品国产一区二区| 99久久精品国产麻豆| 精品久久久久久久无码 | 久久国产亚洲精品| 久久露脸国产精品| 人人狠狠综合久久亚洲| 中文国产成人精品久久亚洲精品AⅤ无码精品| 国产成人无码精品久久久久免费| 日本精品久久久中文字幕| 久久996热精品xxxx|