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

            <2012年7月>
            24252627282930
            1234567
            891011121314
            15161718192021
            22232425262728
            2930311234

            導航

            統計

            公告

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            me

            好友

            同學

            網友

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            好久久免费视频高清| 久久国产精品一区| 久久久女人与动物群交毛片| 精品久久久久久久久午夜福利| 国内精品久久久久伊人av| 国产2021久久精品| 18禁黄久久久AAA片| 9久久9久久精品| 久久这里的只有是精品23| 久久国产精品77777| 久久久久亚洲AV成人网| 久久棈精品久久久久久噜噜| 久久精品国产第一区二区| 伊人久久综合成人网| 久久久久女教师免费一区| 久久久91精品国产一区二区三区| 久久人妻少妇嫩草AV无码蜜桃| 国内精品久久久久伊人av| 国产精品美女久久福利网站| 久久AⅤ人妻少妇嫩草影院| 国内精品久久久人妻中文字幕| 三级片免费观看久久| 伊人色综合久久天天| 1000部精品久久久久久久久| 伊人色综合久久天天网| 久久精品国产精品亚洲艾草网美妙| 久久精品人人做人人爽97| 日本人妻丰满熟妇久久久久久| 热RE99久久精品国产66热| 99久久精品国产一区二区三区| 久久99国产综合精品| 色偷偷久久一区二区三区| 国产成人无码精品久久久性色| 亚洲国产成人久久综合区| 久久无码精品一区二区三区| 国产毛片久久久久久国产毛片| 久久精品国产亚洲网站| 亚洲国产精品久久久久网站| 狠狠人妻久久久久久综合| 国产高清国内精品福利99久久| 国产精品九九久久精品女同亚洲欧美日韩综合区 |