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

            /*1.百度語言翻譯機
            百度的工程師們是非常注重效率的,在長期的開發與測試過程中,他們逐漸創造了一套獨特的縮略語。他們在平時的交談、會議,甚至在各種技術文檔中都會大量運用。

            為了讓新員工可以更快地適應百度的文化,更好地閱讀公司的技術文檔,人力資源部決定開發一套專用的翻譯系統,把相關文檔中的縮略語和專有名詞翻譯成日常語言。

            輸入要求:
            輸入數據包含三部分:
            1. 第一行包含一個整數N(N<=10000),表示總共有多少個縮略語的詞條;
            2. 緊接著有N行的輸入,每行包含兩個字符串,以空格隔開。第一個字符串為縮略語(僅包含大寫英文字符,長度不超過10字節),第二個字符串為日常語言(不包含空格,長度不超過255字節);
            3. 從第N+2開始到輸入結束為包含縮略語的相關文檔(總長度不超過1000000個字節)。例:
            6
            PS 門戶搜索部
            NLP 自然語言處理
            PM 產品市場部
            HR 人力資源部
            PMD 產品推廣部
            MD 市場發展部
            百度的部門包括PS,PM,HR,PMD,MD等等,其中PS還包括NLP小組。


            輸出要求:
            輸出將縮略語轉換成日常語言后的文檔。(將縮略語轉換成日常語言,其他字符保留原樣)。例:
            百度的部門包括門戶搜索部,產品市場部,人力資源部,產品推廣部,市場發展部等等,其中門戶搜索部還包括自然語言處理小組。


            評分規則:
            1.程序將運行在一臺Linux機器上(內存使用不作嚴格限制),在每一測試用例上運行不能超過10秒,否則該用例不得分;
            2.要求程序能按照輸入樣例的格式讀取數據文件,按照輸出樣例的格式將運行結果輸出到標準輸出上。如果不能正確讀入數據和輸出數據,該題將不得分;
            3.該題目共有4個測試用例,每個測試用例為一個輸入文件。各測試用例占該題目分數的比例分別為25%,25%,25%,25%;
            4.該題目20分。


            注意事項:
            1.輸入數據是中英文混合的,中文采用GBK編碼。
            GBK:是又一個漢字編碼標準,全稱《漢字內碼擴展規范》。采用雙字節表示,總體編碼范圍為 8140-FEFE,首字節在 81-FE 之間,尾字節在 40-FE 之間,排除xx7F。總計 23940 個碼位,共收入 21886 個漢字和圖形符號,其中漢字(包括部首和構件)21003 個,圖形符號 883 個。

            2.為保證答案的唯一性,縮略語的轉換采用正向最大匹配(從左到右為正方向)原則。請注意樣例中PMD的翻譯。

            */

            /*
            ? Name:
            ? Copyright:
            ? Author:
            ? Date: 27-05-06 15:37
            ? Description:
            */
            /*
            算法介紹:
            1。創建一個language結構,它包含兩個字符串,分別用來存儲大寫字母串和對應的中文。
            2。讀入數據N,大寫字母串和對應的中文(存儲到*lan),包含縮略語的相關文檔(存儲到textBefore[lenText])。
            3。遍歷textBefore[lenText],將轉換成日常語言后的文檔存儲到textAfter[lenText],轉換的格式為:
            ????? 如果是漢字則不轉換,直接寫入textAfter[lenText];
            ????? 如果為大寫字母,則將其提取,存儲到eng[lenEng],遍歷lan,尋找與eng[lenEng]匹配的English[lenEng],將對應的Chinese[lenChi]存儲到chi[lenChi];然后把chi[lenChi]接到textAfter[lenText]。
            4。輸出textAfter[lenText]。
            */
            #include <iostream>
            #include<string>
            #include<fstream>
            #include <time.h>

            using namespace std;

            const int lenEng = 11;
            const int lenChi = 256;
            const long lenText = 100001;

            typedef struct{
            ????? char English[lenEng];
            ????? char Chinese[lenChi];
            } language;

            language * Readata(const char *filename, char text[], language *lan, int & N);
            bool IsUpper(char ch);
            void PiPei(const language *lan, int len, const char *eng, char *chi);
            void Transducer(const language *lan, int len, const char *textBefore);

            int main()
            {
            ?time_t startTime;
            ?time_t endTime;
            ?time(&startTime);

            ????? language *lan;
            ????? char textBefore[lenText];
            ????? int N = 0;
            ?lan = Readata("in1.txt", textBefore, lan, N);

            ????? for (int i=0; i<N; i++)
            ??????????? cout << lan[i].English << ' ' << lan[i].Chinese << endl;
            ????? cout << textBefore << endl;

            ????? Transducer(lan, N, textBefore);

            ?time(&endTime);
            //?cout << difftime(endTime, startTime) << endl;

            ?getchar();
            ?return 0;
            }

            void Transducer(const language *lan, int len, const char *textBefore)
            {
            ????? char textAfter[lenText];
            ????? int topA = 0;
            ????? int topB = 0;
            ?????
            ????? while(textBefore[topB])
            ????? {
            ??????????? while (textBefore[topB] && !IsUpper(textBefore[topB]))
            ??????????? {
            ????????????????? textAfter[topA++] = textBefore[topB++];
            ??????????? }
            ??????????? textAfter[topA++] = '\0';

            ??????????? char eng[lenEng];
            ??????????? int topE = 0;
            ??????????? while (textBefore[topB] && IsUpper(textBefore[topB]))
            ??????????? {
            ????????????????? eng[topE++] = textBefore[topB++];
            ??????????? }
            ??????????? eng[topE++] = '\0';
            ??????????? if (textBefore[topB])
            ??????????? {
            ????????????????? char chi[lenChi];
            ????????????????? PiPei(lan, len, eng, chi);

            ????????????????? strcat(textAfter, chi);
            ????????????????? while(textAfter[topA])
            ??????????????????????? topA++;
            ??????????? }
            ????? }
            ????? cout << textAfter;
            }

            void PiPei(const language *lan, int len, const char *eng, char *chi)
            {
            ????? for (int i=0; i<len; i++)
            ????? {
            ??????????? if (strcmp(eng, lan[i].English) == 0)
            ??????????? {
            ???????????????? strcpy(chi, lan[i].Chinese);
            ???????????????? return ;
            ??????????? }
            ????? }
            }
            bool IsUpper(char ch)
            {
            ????? if (ch >= 'A' && ch <= 'Z')
            ??????????? return true;
            ????? return false;
            }

            language * Readata(const char *filename, char text[], language *lan, int & N)
            {
            ????? fstream in(filename);
            ????? if (!in)
            ??????????? return 0;?? //結束程序執行

            ????? in >> N;

            ????? lan = new language[N];
            ????? int top = 0;
            ????? int n = 0;
            ????? while (!in.eof() && n < N)
            ????? {
            ??????????? in >> lan[top].English;
            ??????????? in >> lan[top].Chinese;
            ??????????? top++;
            ??????????? n++;
            ????? }

            ????? char buf[lenText];
            ????? while (!in.eof())
            ????? {
            ??????????? in >> buf;
            ??????????? strcat(text, buf);
            ????? }

            ????? in.close(); //關閉文件

            ????? return lan;
            }

            posted @ 2006-05-30 13:52 夢想飛揚 閱讀(975) | 評論 (4)編輯 收藏

            總算有了自己的博客,以后有什么感想啊,心得啊,就往上面寫.
            最近想找一份新的工作,現在的工作環境真的太令人郁悶了,感覺沒一點上升的空間,我可不想就此一生啊!

            posted @ 2006-05-13 11:28 夢想飛揚 閱讀(154) | 評論 (0)編輯 收藏

            僅列出標題
            共4頁: 1 2 3 4 
            欧美熟妇另类久久久久久不卡 | 久久亚洲精品无码AV红樱桃| 亚洲AV无码1区2区久久| 人人狠狠综合久久亚洲88| 日本精品久久久久久久久免费| 国产成人精品综合久久久| 99久久亚洲综合精品网站| 一本久久a久久精品亚洲| 999久久久国产精品| 日韩精品久久无码中文字幕| 国产巨作麻豆欧美亚洲综合久久| 久久久久久国产精品无码下载 | 国产精品gz久久久| 中文字幕久久波多野结衣av| 一本一本久久A久久综合精品| 久久精品国产精品国产精品污 | 国产精品亚洲综合专区片高清久久久 | 久久99精品综合国产首页| 久久涩综合| 亚洲国产精品久久久久婷婷软件 | 久久久久久久久无码精品亚洲日韩 | 亚洲精品乱码久久久久久| 久久久精品国产亚洲成人满18免费网站 | 996久久国产精品线观看| 亚洲日韩欧美一区久久久久我| 九九精品99久久久香蕉| 久久久久99这里有精品10| 精品久久久久久久久久久久久久久| 亚洲va久久久噜噜噜久久| 久久久久久久免费视频| 91精品国产综合久久香蕉| 欧美喷潮久久久XXXXx| 囯产极品美女高潮无套久久久| 久久丝袜精品中文字幕| 岛国搬运www久久| 国产91久久综合| 国产精品伦理久久久久久| 久久国产影院| 无码8090精品久久一区| 亚洲午夜无码AV毛片久久| 久久精品中文字幕一区|