锘??xml version="1.0" encoding="utf-8" standalone="yes"?>99久久精品国产一区二区,久久久久久国产精品免费免费,日本精品久久久久影院日本 http://www.shnenglu.com/csu-yx-2013/category/18793.htmlAlgorithm Study And So Onzh-cnFri, 13 Sep 2013 01:08:32 GMTFri, 13 Sep 2013 01:08:32 GMT60hdu 4294 Multiple 鏁拌 + bfshttp://www.shnenglu.com/csu-yx-2013/archive/2012/09/18/191097.htmlyxyxTue, 18 Sep 2012 05:27:00 GMThttp://www.shnenglu.com/csu-yx-2013/archive/2012/09/18/191097.htmlhttp://www.shnenglu.com/csu-yx-2013/comments/191097.htmlhttp://www.shnenglu.com/csu-yx-2013/archive/2012/09/18/191097.html#Feedback0http://www.shnenglu.com/csu-yx-2013/comments/commentRss/191097.htmlhttp://www.shnenglu.com/csu-yx-2013/services/trackbacks/191097.html   棰樻剰鏄粰鍑篘,K錛屾眰M錛屼嬌寰桵鏄疦鐨勬鍊嶆暟錛岃屼笖M鐢↘榪涘埗琛ㄧず鍚庢墍闇瑕佺殑涓嶅悓鏁板瓧(0,1,2,3,...,k-1)鏈灝戯紝濡傛灉鏈夊緇?br />榪欐牱鐨勬儏鍐碉紝姹傚嚭鏈灝忕殑M銆?br />   寰堟暟瀛︾殑棰樻剰銆傜敤鍒頒簡涓涓粨璁猴紝灝辨槸浠繪剰鏁板瓧鐨勬鍊嶆暟鍧囧彲浠ョ敤涓嶈秴榪?涓笉鍚屾暟瀛楃殑鏁板緱鍒般?br />   璇佹槑濡備笅錛?br />   浠繪剰鏁癕 % N 鎬誨叡鏈塏縐嶇粨鏋滐紝鍋囧鏈塏+1涓笉鍚岀殑M錛岄偅涔堣偗瀹氭湁2涓狹瀵筃鍙栨ā鍚庣殑緇撴灉鏄浉鍚岋紝榪欎釜鏄墍璋撻附宸㈠師鐞嗐?br />閭d箞錛屾垜鍙朼,aa,aaa,...,aaaaaaaaaa....錛屾誨叡N+1涓紝鍚屾牱婊¤凍涓婇潰鐨勭粨璁恒傞偅涔堟垜鍙栭偅2涓N鍙栨ā鐩稿悓鐨勬暟瀛楃浉鍑忓緱鍒?br />鏁板瓧aaaaa...000....錛岃繖涓暟瀛楄偗瀹氭槸N鐨勫嶆暟銆?br />   緇煎悎涓婇潰鐨勮瘉鏄庯紝鍙兘寰楀埌2涓暟瀛楄偗瀹氳兘琛ㄧずN鐨勫嶆暟銆備絾鏄笉鑳借褰㈠紡灝辨槸aaaaa...000....銆?br />
   鍒頒簡榪欓噷鎴戣繕鏄竴鐐規(guī)濊礬閮芥病鏈夛紝涓鐐歸兘涓嶇煡閬撴庝箞鎼滅儲銆傘傘?br />   鎯充簡1涓灝忔椂錛屾棤澶寸華錛岄棶榪囦簡榪欓鐨勫悓瀛︼紝榪樻槸鏃犲ご緇傜湅瑙i鎶ュ憡錛屼粬浠殑浠g爜鍐欏緱澶墰浜嗭紝瀹屽叏鐪嬩笉鎳傦紝鏃犲ご緇?br />涔熻涔熸槸鎴戝bfs鐞嗚В澶祬錛屾墠鐪嬩笉鎳備粬浠殑鎼滅儲浠g爜銆傝屼笖錛屾垜榪炲彲浠ユ悳绱㈢殑鍦版柟閮芥病鏈夋壘鍒幫紝閮戒笉鐭ラ亾鎼滀粈涔堜簡銆?br />   鎯充簡濂戒箙錛屾槰澶╁悆楗殑鏃跺欙紝緇堜簬鍙戠幇鍙互瀵逛綑鏁拌繘琛屾悳绱€?br />   瀵逛簬浠繪剰鐨凬錛屽叾浣欐暟灝辨槸鑼冨洿鏄痆0, N -1]銆傝繖涓叾瀹炲氨鍙互浠h〃鐘舵佷簡錛屾垨鑰呬唬琛╞fs涓殑鐐逛簡銆備粠褰撳墠浣欐暟杞Щ鍒板叾瀹?br />浣欐暟鐨勬槸MOD * K +  A 鎴栬?MOD * K + B錛屽鏋滆杞Щ鍒板緱浣欐暟浠ュ墠娌¤鎼滆繃錛岄偅灝卞彲浠ヨ漿縐昏繃鍘匯傝繖涓垰濂藉氨鏄竴涓?br />浼樺寲浜嗐備篃鍙互鐪嬫垚鏄瓙闂浜嗐備絾鏄紝dfs瀹屽叏涓嶈銆傚垰寮濮嬬敤dfs錛岀粷瀵圭殑瓚呮椂銆?br />   鐢╠fs涔熸槸鎴戝鎬濊礬鐞嗚В涓嶆繁錛屼莖騫歌涓鴻兘榪囥傘傘傚悗闈㈠彂鐜幫紝榪欓瀹屽叏鍜宐fs鍚誨悎銆俒0, N -1]鍒氬ソ浠h〃N涓偣錛屾垜瑕侀氳繃
浠庡闈㈢殑涓涓偣錛屾渶鐭殑閬嶅巻鍒扮偣0錛屽彲浠fs鎴栬呮渶鐭礬綆楁硶銆傝繖棰樻垜瑙夊緱榪樻湁涓毦鐐瑰氨鏄繚瀛樼瓟妗堬紝鍥犱負絳旀鏈闀跨殑闀垮害
鍙兘鏄疦(N<=10000)錛屾墍浠ユ妸絳旀鐩存帴鏀懼埌鑺傜偣閲岄潰鑲畾涓嶈鐨勩備絾鏄紝鎴戣繕浠旂粏鐪嬭繃綆楁硶瀵艱銆傚洜姝ゆ兂鍒頒簡鍙互鍒╃敤bfs
鎼滅儲鍑烘潵鐨勯偅棰楁爲鎴栬呮渶鐭礬綆楁硶璺戝嚭鏉ョ殑閭i鏍戯紝浠庣洰鏍囪妭鐐歸嗗簭瀵繪壘絳旀錛屾壘鍒板嚭鍙戣妭鐐逛箣鍚庯紝鍐嶆妸絳旀reverse涓涓嬪氨琛屼簡銆?br />   榪欓榪樺緱娉ㄦ剰0涓嶈兘鏄疦鐨勫嶆暟錛屾墍浠ユ敞鎰廱fs(0,i)榪欑鎯呭喌鐨勫鐞嗐?br />
   浠g爜濡備笅錛?br />
#include <stdio.h>
#include <string.h>
#include <queue>
#include <algorithm>
using namespace std;

const int MAX_N = 10010;
int nOut[MAX_N];
int nOLen;
int nAns[MAX_N];
int nALen;
bool bMod[MAX_N];
int nFather[MAX_N];
int nChoose[MAX_N];
int nN;
int nK;
bool bFind;

int Cmp(int* A, int nLA, int* B, int nLB)
{
    if (nLA != nLB)
    {
        return nLA - nLB;
    }
    for (int i = 0; i < nLA; ++i)
    {
        if (A[i] != B[i])
        {
            return A[i] - B[i];
        }
    }
    return 0;
}

void Bfs(int nA, int nB)
{
    memset(bMod, falsesizeof(bMod));
    queue<int> que;
    que.push(0);
    int nTemp;
    bool bFirst = true;
    bFind = false;
    
    if (nA > nB)swap(nA, nB);
    //printf("nA:%d, nB:%d\n", nA, nB);
    while (!que.empty())
    {
        //printf("nMod:%d\n", que.front());
        int nMod = que.front();
        que.pop();
        if (nMod == 0)
        {
            if (bFirst)bFirst = false;
            else
            {
                bFind = true;
                break;
            }
        }
        
        nTemp = (nMod * nK + nA) % nN;
        if (!(nMod == 0 && nA == 0) && !bMod[nTemp])
        {
            nFather[nTemp] = nMod;
            nChoose[nTemp] = nA;
            que.push(nTemp);
            bMod[nTemp] = true;
            //printf("nTemp:%d\n", nTemp);
        }
        if (nA == nB)continue;
        nTemp = (nMod * nK + nB) % nN;
        if (!bMod[nTemp])
        {
            nFather[nTemp] = nMod;
            nChoose[nTemp] = nB;
            que.push(nTemp);
            bMod[nTemp] = true;
            //printf("nTemp:%d\n", nTemp);
        }
    }
    
    if (bFind)
    {
        int nF = 0;
        nALen = 0;
        do
        {
            nAns[nALen++] = nChoose[nF];
            nF = nFather[nF];
        } while (nF);
        reverse(nAns, nAns + nALen);
    }
}

int main()
{
    while (scanf("%d%d", &nN, &nK) == 2)
    {
        bool bOk = false;
        nOLen = 0;
        for (int i = 1; i < nK; ++i)
        {
            Bfs(i, i);
            if (bFind)
            {
                if (nOLen == 0 || Cmp(nOut, nOLen, nAns, nALen) > 0)
                {
                    nOLen = nALen;
                    memcpy(nOut, nAns, sizeof(int) * nALen);
                }
                bOk = true;
            }
        }
        if (!bOk)
            for (int i = 0; i < nK; ++i)
            {
                for (int j = i + 1; j < nK; ++j)
                {
                    Bfs(i, j);
                    if (bFind)
                    {
                        if (nOLen == 0 || Cmp(nOut, nOLen, nAns, nALen) > 0)
                        {
                            nOLen = nALen;
                            memcpy(nOut, nAns, sizeof(int) * nALen);
                        }
                    }
                }
            }
        for (int k = 0; k < nOLen; ++k)
        {
            printf("%d", nOut[k]);
        }
        printf("\n");
    }

    return 0;
}


yx 2012-09-18 13:27 鍙戣〃璇勮
]]>
uva 657 - The die is casthttp://www.shnenglu.com/csu-yx-2013/archive/2012/07/14/183453.htmlyxyxSat, 14 Jul 2012 13:16:00 GMThttp://www.shnenglu.com/csu-yx-2013/archive/2012/07/14/183453.htmlhttp://www.shnenglu.com/csu-yx-2013/comments/183453.htmlhttp://www.shnenglu.com/csu-yx-2013/archive/2012/07/14/183453.html#Feedback0http://www.shnenglu.com/csu-yx-2013/comments/commentRss/183453.htmlhttp://www.shnenglu.com/csu-yx-2013/services/trackbacks/183453.html
30 15 
..............................
..............................
...............*..............
...*****......****............
...*X***.....**X***...........
...*****....***X**............
...***X*.....****.............
...*****.......*..............
..............................
........***........******.....
.......**X****.....*X**X*.....
......*******......******.....
.....****X**.......*X**X*.....
........***........******.....
..............................
姣斿涓婇潰榪欎釜30 * 15鐨勫浘鐗囬噷闈紝涓鍏辨湁鍥涗釜鍖哄煙錛?浣滀負鍖哄煙鐨勫簳鑹詫紝鐒跺悗鏄眰鍖哄煙閲岄潰鏈夊灝戜釜X鐨勫潡銆傝繖涓鍗曠函dfs鐨勮瘽錛屽緢娌″姙娉曪紝鍥犱負鏃犳硶涓嬈℃ф妸榪炴帴鍦ㄤ竴璧風殑X閮芥悳绱簡銆傛瘮濡傦紝
5 5
XXX*X 
XXX*X 
..... 
X***X 
XX*** 
鐨勬椂鍊欙紝dfs寰堟槑鏄懼氨浼氬嚭鐜伴棶棰橈紝鍥犱負浼氬厛紱誨紑X鍧楋紝鍐嶆鍥炲埌X鍧楋紝璁℃暟灝變細鍑虹幇闂浜嗐傚洜姝ゅ彧鑳介亣鍒癤鐨勬椂鍊欙紝榪涜涓嬈fs錛屽皢涓庡叾鐩歌繛鎺ョ殑X鍏ㄩ儴鎼滅儲鎺夈傘傘傚茍涓旀壘鍒頒笌褰撳墠X鍧楃浉榪炴帴鐨勪竴涓?鐨勪綅緗紝濡傛灉鏈夎繖鏍風殑浣嶇疆錛屽氨緇х畫榪涜dfs銆?/span>

浠g爜濡備笅錛?br />
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <queue>
using namespace std;

int nW, nH;
char szData[100][100];
bool bVisit[100][100];
int nNum;
int nDice[100];
int nAdd[4][2] = {{0, -1}, {-1, 0}, {0, 1}, {1, 0}};

bool IsPosOk(int i, int j)
{
    return i >= 0 && i < nH && j >= 0 && j < nW;
}

struct POS
{
    int nI;
    int nJ;
};

bool Bfs(int& nI, int& nJ)
{
    bool bRet = false;
    queue<POS> qp;
    POS pos = {nI, nJ};
    int i = nI, j = nJ;

    qp.push(pos);
    while (qp.empty() == false)
    {
        POS head = qp.front();
        qp.pop();

        for (int m = 0; m < 4; ++m)
        {
            int nNextI = head.nI + nAdd[m][0];
            int nNextJ = head.nJ + nAdd[m][1];

            if (IsPosOk(nNextI, nNextJ) && bVisit[nNextI][nNextJ] == false)
            {
                if (szData[nNextI][nNextJ] == 'X')
                {
                    bVisit[nNextI][nNextJ] = true;
                    POS pos = {nNextI, nNextJ};
                    qp.push(pos);
                }
                else if (szData[nNextI][nNextJ] == '*')
                {
                    bRet = true;
                    nI = nNextI;//   榪欓噷鏄繑鍥炴柊鐨刣fs浣嶇疆
                    nJ = nNextJ;
                }
            }
        }
    }
    
    return bRet;
}

void dfs(int i, int j, int nNum)
{
    bVisit[i][j] = true;
    if (szData[i][j] == 'X')
    {
        nDice[nNum]++;
        bool bDfs = Bfs(i, j);//鎵╂暎鎺夊綋鍓嶈繛閫氱殑鎵鏈?X'
        if (bDfs == false)
        {
            return;
        }
        else
        {
            dfs(i, j, nNum);
        }
    }

    for (int m = 0; m < 4; ++m)
    {
        int nNextI = i + nAdd[m][0];
        int nNextJ = j + nAdd[m][1];

        if (IsPosOk(nNextI, nNextJ) && bVisit[nNextI][nNextJ] == false
                && szData[nNextI][nNextJ] != '.')
        {
            dfs(nNextI, nNextJ, nNum);
        }
    }
}

int main()
{
    int nCases = 1;

    while (scanf("%d%d", &nW, &nH), nW + nH)
    {
        for (int i = 0; i < nH; ++i)
        {
            scanf("%s", szData[i]);
        }
        memset(bVisit, falsesizeof(bVisit));
        memset(nDice, 0, sizeof(nDice));
        nNum = 0;

        for (int i = 0; i < nH; ++i)
        {
            for (int j = 0; j < nW; ++j)
            {
                if (szData[i][j] == 'X' && bVisit[i][j] == false)
                {
                    dfs(i, j, nNum);
                    nNum++;
                }
            }
        }
        sort(nDice, nDice + nNum);

        printf("Throw %d\n", nCases++);
        for (int i = 0; i < nNum; ++i)
        {
            printf("%d%s", nDice[i], i == nNum - 1 ? "\n" : " ");
        }
        printf("\n");
    }

    return 0;
}


yx 2012-07-14 21:16 鍙戣〃璇勮
]]>
Uva 10132 - File Fragmentationhttp://www.shnenglu.com/csu-yx-2013/archive/2012/03/30/169548.htmlyxyxFri, 30 Mar 2012 10:52:00 GMThttp://www.shnenglu.com/csu-yx-2013/archive/2012/03/30/169548.htmlhttp://www.shnenglu.com/csu-yx-2013/comments/169548.htmlhttp://www.shnenglu.com/csu-yx-2013/archive/2012/03/30/169548.html#Feedback1http://www.shnenglu.com/csu-yx-2013/comments/commentRss/169548.htmlhttp://www.shnenglu.com/csu-yx-2013/services/trackbacks/169548.html鎴怤寮犱竴鏍風殑綰搞傛垜鍘嗘潵鎬濈淮姣旇緝闅忎究錛屼笉鏄緢涓ヨ皚鐨勯偅縐嶃傜劧鍚庯紝鎯充簡涓涓嬪彂鐜頒竴瀹氫細鏈夊ぇ浜庣瓑浜嶯寮犵牬綰哥墖鏄鍚堝墠鍗婇儴鍒嗘ā寮忕殑銆?br />閭d箞錛屽彲浠ュ緩涓涓瓧鍏告爲錛屾妸鎵鏈夌殑鏄墠鍗婂紶綰哥殑鎵懼嚭鏉ャ傜劧鍚庢牴鎹繖鍓嶅崐寮犵焊錛屾壘鍑哄墿涓嬬殑鍚庡崐寮犵焊錛堝洜涓虹煡閬撲竴鏁村紶綰哥殑闀垮害錛屾墍浠ョ煡閬?br />鍓╀笅鐨勫崐寮犵焊鐨勯暱搴︼級銆備絾鏄啓鍑烘潵灝卞彂鐜拌繖鏍蜂笉涓ヨ皚錛屾槸涓嶅鐨勩傚洜涓哄崟綰牴鎹凡緇忔壘鍑烘潵鐨勫墠鍗婂紶綰革紝鏃犳硶紜畾鍚庡崐寮犵焊錛堜簨瀹炰笂錛屽彧鑳?br />紜畾鍏墮暱搴﹁屽凡錛夈?br />   閭d箞鍙兘鎵懼叾瀹冩柟娉曚簡錛屽啀媯鏌ヤ簡涓嬫暟鎹寖鍥達紝鍙戠幇姣旇緝?yōu)畯锛岄偅涔堟剰鍛崇潃鍙互鏆村姏姹傝В浜嗐傚ソ鍚э紝閭e氨娣辨悳鍚с傛垜鎶婃墍鏈夌殑鐮寸焊鐗囨寜鐓у畠浠?br />鐨勯暱搴﹀垎鎴愪竴浜涢泦鍚堬紝瀵逛簬闀垮害涓簂en鐨勭焊鐗囬泦鍚堬紝鍙涓庨暱搴︿負nAnsLen - len鐨勭焊鐗囬泦鍚堣繘琛屾悳绱㈠尮閰嶏紝鎵懼嚭涓涓彲琛岀殑瑙e嵆鍙簡銆傛垜鍙?br />鎯沖綋鐒剁殑璁や負鍙鍖歸厤涓瀵歸泦鍚堝嵆鍙簡錛岄偅涔堝緢鏄劇劧鍙堟槸閿欑殑浜嗐傚ソ鍚э紝鎴戝彧鑳藉鎵鏈夐泦鍚堣繘琛屽尮閰嶄簡銆傚姣忎竴瀵歸泦鍚堣繘琛屾繁鎼滃洖婧潵鍖歸厤寰?br />閫夌殑Ans錛岃岃繖涓狝ns鏄粠絎竴瀵歸泦鍚堜腑鎼滅儲鍑烘潵鐨勭瓟妗堛?br />   浠g爜鍐欏緱寰堝啑闀匡紝寰堝鏉傦紝宸笉澶?00澶氳浜嗐傜湡鐨勬槸姘村鉤鏈夐檺錛岃繖縐嶉寰堟槑鏄懼簲璇ユ湁鏇存柟渚跨殑瑙f硶鐨勶紝鑰屼笖鎴戠殑浠g爜搴旇涓嶈嚦浜庡啓寰楄繖涔?br />涔辯殑銆?br />   鍚庨潰榪樻槸閿欎簡寰堝嬈★紝鍙戠幇浜嗗緢澶歜ug錛屾瘮濡傛垜濡傛灉鎼滅儲闀垮害涓簄AnsLen/2鐨勯泦鍚堟椂灝卞繀欏昏繘琛岀壒孌婂鐞嗐傝繕鏈夋渶鍚庝竴涓牱渚嬪悗闈笉鑳借緭
鍑?#8217;\n'錛岃屼笖uvaoj涓嶈兘瀵硅繖涓崲琛屽垽PE錛屼竴鐩存槸WA錛屽疄鍦ㄦ槸璁╀漢宕╂簝銆?br />   
#include <stdio.h> 
#include <string.h>
#define MAX (256 + 10)
#define MAX_NUM (150)

char szLines[MAX_NUM][MAX];
char szAns[MAX];

struct SET
{
    int nNum;
    char szLines[MAX_NUM][MAX];
    bool bUsed[MAX];
};

SET sets[MAX];
char szTmpOne[MAX];
char szTmpTwo[MAX];
int nAnsLen;
bool bFind;

void dfs(int nI, int nNum)
{
    if (nNum == 0)
    {
        bFind = true;
    }
    else
    {
        for (int i = 0; i < sets[nI].nNum && !bFind; ++i)
        {
            for (int j = 0; j < sets[nAnsLen - nI].nNum && !bFind; ++j)
            {
                if (nI == nAnsLen - nI && i == j)
                {
                    continue;
                }

                if (!sets[nI].bUsed[i] && !sets[nAnsLen - nI].bUsed[j])
                {
                    strcpy(szTmpOne, sets[nI].szLines[i]);
                    strcat(szTmpOne, sets[nAnsLen - nI].szLines[j]);
                    strcpy(szTmpTwo, sets[nAnsLen - nI].szLines[j]);
                    strcat(szTmpTwo, sets[nI].szLines[i]);

                    //printf("%s\n", szAns);
                    if (strcmp(szTmpOne, szAns) == 0 || strcmp(szTmpTwo, szAns) == 0)
                    {
                        sets[nI].bUsed[i] = sets[nAnsLen - nI].bUsed[j] = true;
                        if (!bFind)
                        {
                            if (nI == nAnsLen - nI)
                            {
                                dfs(nI, nNum - 2);
                            }
                            else
                            {
                                dfs(nI, nNum - 1);
                            }
                        }
                        sets[nI].bUsed[i] = sets[nAnsLen - nI].bUsed[j] = false;
                    }
                }
            }
        }
    }
}

bool Find(int nI)
{
    bFind = false;
    for (int i = 0; i < sets[nI].nNum && !bFind; ++i)
    {
        for (int j = 0; j < sets[nAnsLen - nI].nNum && !bFind; ++j)
        {
            if (nI == nAnsLen - nI && i == j)
            {
                continue;
            }

            sets[nI].bUsed[i] = true;
            sets[nAnsLen - nI].bUsed[j] = true;

            strcpy(szAns, sets[nI].szLines[i]);
            strcat(szAns, sets[nAnsLen - nI].szLines[j]);
            if (nI == nAnsLen - nI)
            {
                dfs(nI, sets[nI].nNum - 2);
            }
            else
            {
                dfs(nI, sets[nI].nNum - 1);
            }
            if (bFind)
            {
                for (int k = nI + 1; k <= nAnsLen / 2; ++k)
                {
                    bFind = false;
                    dfs(k, sets[k].nNum);
                    if (!bFind)
                    {
                        break;
                    }
                }
                if (bFind)
                {
                    return true;
                }
            }

            strcpy(szAns, sets[nAnsLen - nI].szLines[j]);
            strcat(szAns, sets[nI].szLines[i]);
            if (nI == nAnsLen - nI)
            {
                dfs(nI, sets[nI].nNum - 2);
            }
            else
            {
                dfs(nI, sets[nI].nNum - 1);
            }
            if (bFind)
            {
                for (int k = nI + 1; k <= nAnsLen / 2; ++k)
                {
                    bFind = false;
                    dfs(k, sets[k].nNum);
                    if (!bFind)
                    {
                        break;
                    }
                }
                if (bFind)
                {
                    return true;
                }
            }

            sets[nI].bUsed[i] = false;
            sets[nAnsLen - nI].bUsed[j] = false;
        }
    }

    return false;
}

void Search()
{
    for (int i = 0; i <= nAnsLen; ++i)
    {
        if (sets[i].nNum)
        {
            Find(i);
            break;
        }
    }
}

int main()
{
    int nCases;
    
    #ifdef CSU_YX
    freopen("in.txt", "r", stdin);
    //freopen("out.txt", "w", stdout);
    #endif
    scanf("%d\n", &nCases);

    int nNum = 0;
    int nTotalLen = 0;
    while (gets(szLines[nNum]), nCases)
    {
        if (szLines[nNum][0] == '\0' && nNum != 0)
        {
            nAnsLen = nTotalLen * 2 / nNum;
            memset(szAns, 0, sizeof(szAns));
            Search();
            printf("%s\n\n", szAns);
            
            memset(sets, 0, sizeof(sets));
            memset(szLines, 0, sizeof(szLines));
            nNum = 0;
            nTotalLen = 0;
            --nCases;
        }
        else if (szLines[nNum][0] != '\0')
        {
            int nLen = strlen(szLines[nNum]);
            nTotalLen += nLen;
            strcpy(sets[nLen].szLines[sets[nLen].nNum], szLines[nNum]);
            ++sets[nLen].nNum;
            ++nNum;
        }
    }

    return 0;
}


yx 2012-03-30 18:52 鍙戣〃璇勮
]]>
鐢熸垚鎺掑垪鐨勭畻娉?POJ - 1256 鍜?POJ鐧劇粌 - 1833)http://www.shnenglu.com/csu-yx-2013/archive/2011/12/26/162852.htmlyxyxMon, 26 Dec 2011 07:53:00 GMThttp://www.shnenglu.com/csu-yx-2013/archive/2011/12/26/162852.htmlhttp://www.shnenglu.com/csu-yx-2013/comments/162852.htmlhttp://www.shnenglu.com/csu-yx-2013/archive/2011/12/26/162852.html#Feedback0http://www.shnenglu.com/csu-yx-2013/comments/commentRss/162852.htmlhttp://www.shnenglu.com/csu-yx-2013/services/trackbacks/162852.html杈撳叆:涓涓簭鍒梥,璇ュ簭鍒楅噷闈㈠彲鑳戒細鏈夊悓鏍風殑瀛楃,涓嶄竴瀹氭湁搴?br />杈撳嚭:鎵撲貢杈撳叆涓殑搴忓垪,鍙兘浜х敓鐨勬墍鏈夋柊鐨勫簭鍒?br />棰樼洰2鎻忚堪:
杈撳叆:涓涓簭鍒梥,璇ュ簭鍒楅噷闈㈠彲鑳戒細鏈夊悓鏍風殑瀛楃,涓嶄竴瀹氭湁搴?鍜?涓涓暣鏁発
杈撳嚭:璇ュ簭鍒楀線鍚庤綆楃k涓簭鍒?鎵鏈夊簭鍒楁槸浠ュ瓧鍏稿簭鎺掑簭鐨?br />
濡傛灉浼氭湁搴忔悳绱㈢殑绔ラ瀷鑷劧鑰岀劧鑳界珛鍒誨仛鍑烘潵絎竴涓鐩?鍙槸絎簩涓鐩湪s杈冮暱鐨勬儏鍐典笅,鍗撮渶瑕佺敤妯℃嫙鑰屼笉鏄悳绱?..
澶у閮界煡閬揝TL閲岄潰鏈変釜娉涘嚱妯$増, prev_permutation鍜宯ext_permutation,鐢ㄦ硶涔熷緢綆鍗?瀹炵幇鐨勫氨鏄鐩?鐨勫姛鑳?..
浣嗘槸綆楁硶鏈濂藉緱闈犺嚜宸辨兂鍑烘潵,鑷繁鎯沖嚭鏉ョ殑鎵嶆槸鑷繁鐨?紕板埌鏂扮殑闂鎵嶈兘浜х敓鎬濇兂鐨勭伀鑺?..

搴熻瘽灝戣,棰樼洰1鐨勮В娉曞氨鏄繁鎼?涓嶈繃闇瑕佸姞涓婁竴涓猙ool鏁扮粍鏍囪鍜屼竴涓嚱鏁扮‘瀹氫笉鍚屽瓧絎︿箣闂寸殑澶у皬(鏈夊彲鑳借繖涓ぇ灝忚繕涓嶆槸Ascii鐮佸氨鑳藉喅瀹氱殑),
澶ц嚧鎻忚堪涓嬫悳绱㈣繃紼?姣斿杈撳叆搴忓垪鏄?2345,閭d箞鎴戞悳绱㈢殑榪囩▼澶ц嚧鏄涓灞傛寜欏哄簭閫夊彇1-5,榪涘叆絎簩灞傜殑鏃跺欎篃鏄寜欏哄簭閫夊彇1-5,
浠ユ綾繪帹,浣嗘槸姣忎竴灞傞噷闈㈤兘鍙兘閫夊墠闈㈢殑灞傛娌℃湁閫夎繃鐨勬暟,鑰屼笖鍥犱負鏈夐噸澶嶅瓧絎?綆楁硶榪樺繀欏諱繚璇佹瘡涓灞傞噷闈㈡寜欏哄簭閫夊彇鐨勫瓧絎﹀繀欏繪槸鍗囧簭鐨?
鐔熸?zhèn)墮搴搴忔悳鐑﹀拰鍥炴函鐨勫悓瀛?寰堣嚜鐒跺氨浼氫駭鐢熻繖鏍風殑鎯蟲硶...
POJ - 1256鐨勪唬鐮佸涓?
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <algorithm>
#define MAX (13 + 10)
using namespace std;
bool bUsed[MAX];
char szAns[MAX];
char szInput[MAX];
bool CmpChar(char chOne, char chTwo)
{
    if (abs(chOne - chTwo) != 'a' - 'A')
    {
        return tolower(chOne) - tolower(chTwo) < 0;
    }
    return chOne - chTwo < 0;
}
bool Greater(char chOne, char chTwo)
{
    if (abs(chOne - chTwo) != 'a' - 'A')
    {
        return tolower(chOne) - tolower(chTwo) > 0;
    }
    return chOne - chTwo > 0;
}
void Gen(int nDepth, int nLen)
{
    if (nDepth == nLen)
    {
        szAns[nLen] = '\0';
        printf("%s\n", szAns);
        return;
    }
    
    char chLast = '\0';
    for (int i = 0; i < nLen; ++i)
    {
        if (!bUsed[i] && Greater(szInput[i], chLast))
        {
            bUsed[i] = true;
            szAns[nDepth] = szInput[i];
            Gen(nDepth + 1, nLen);
            bUsed[i] = false;
            chLast = szInput[i];
        }
    }
}
int main()
{
    int nCases;
    
    scanf("%d", &nCases);
    while (nCases--)
    {
        scanf("%s", szInput);
        int nLen = strlen(szInput);
        sort(szInput, szInput + nLen, CmpChar);
        Gen(0, nLen);
    }
    
    return 0;
}
棰樼洰2鐨勮В娉曟槸妯℃嫙,鍔熻兘綾諱技涓嶴TL鐨勯偅2涓硾鍨嬫ā鐗堝嚱鏁?綆楁硶鐨勫ぇ鑷磋繃紼嬫槸鎯沖姙娉曚粠褰撳墠搴忓垪榪涘叆涓嬩竴涓垰濂芥瘮鍏跺ぇ鎴栬呭垰濂芥瘮鍏跺皬鐨勫簭鍒?..寰堣嚜鐒舵垜浠兂鍒拌鎶婂簭鍒楀悗闈㈠ぇ鐨勫瓧絎︿氦鍜屽墠闈㈠皬鐨勫瓧絎︿氦鎹㈠氨浼氫嬌搴忓垪鍙樺ぇ,涓轟簡浣垮叾鍒氬ソ鍙樺ぇ,鍙互鎶婁氦鎹㈠悗鐨勫瓧絎︿粠浜ゆ崲浣嶇疆璧瘋嚦鏈鍚庨兘鎺掑簭涓涓?鐜板湪鐨勯棶棰樻槸鎴戜滑濡備綍閫夊彇2涓瓧絎︿氦鎹?..姝g‘鐨勬兂娉曟槸,鎴戜滑浠庢渶鍚庨潰寮濮嬪線鍓嶉潰鐪?瀵繪壘涓涓渶闀跨殑閫掑搴忓垪,鎵懼埌涔嬪悗,鎴戜滑鍙渶瑕侀夊彇閫掑搴忓垪鍓嶉潰鐨勯偅涓瓧絎hBefore鍜岄掑搴忓垪閲岄潰鐨勪竴涓渶灝忕殑姣攃hBefore澶х殑瀛楃浜ゆ崲鍗沖彲...浜ゆ崲涔嬪悗,灝嗘柊鐨勯掑搴忓垪鎺掑簭涓涓嬪嵆鍙?..
涓轟粈涔堣繖鏍峰仛浜?鍥犱負浠庡悗寰鍓嶇湅鐨勯掑搴忓垪,鏄笉鑳戒氦鎹?涓瓧絎﹁褰撳墠搴忓垪鍙樺ぇ鐨?鎵浠ュ繀欏婚夊彇鏈闀塊掑搴忓垪鍓嶉潰鐨勯偅涓瓧絎︿氦鎹?..

POJ鐧劇粌 - 1833 鐨勪唬鐮佸涓?
#include <stdio.h>
#include <string.h>
#include <algorithm>
#define MAX (1024 + 10)
using namespace std;
int nInput[MAX];
void GetNext(int* nInput, int nLen)
{
    int i = nLen - 2;
    while (i >= 0)
    {
        if (nInput[i] >= nInput[i + 1])
        {
            --i;
        }
        else
        {
            int k = i + 1;
            for (int j = nLen - 1; j > i; --j)
            {
                if (nInput[j] > nInput[i] && nInput[j] < nInput[k])
                {
                    k = j;
                }
            }
            swap(nInput[i], nInput[k]);
            sort(nInput + i + 1, nInput + nLen);
            return;
        }
    }
    
    sort(nInput, nInput + nLen);
}
int main()
{
    int nCases;
    scanf("%d", &nCases);
    while (nCases--)
    {
        int nLen;
        int nK;
        scanf("%d%d", &nLen, &nK);
        for (int i = 0; i < nLen; ++i)
        {
            scanf("%d", &nInput[i]);
        }
        for (int i = 0; i < nK; ++i)
        {
            GetNext(nInput, nLen);
        }
        for (int i = 0; i < nLen; ++i)
        {
            printf("%d%s", nInput[i], i == nLen - 1 ? "\n" : " ");
        }
    }
    return 0;
}


yx 2011-12-26 15:53 鍙戣〃璇勮
]]>
POJ鐧劇粌 - 2774:鏈ㄦ潗鍔犲伐http://www.shnenglu.com/csu-yx-2013/archive/2011/12/08/161713.htmlyxyxWed, 07 Dec 2011 17:43:00 GMThttp://www.shnenglu.com/csu-yx-2013/archive/2011/12/08/161713.htmlhttp://www.shnenglu.com/csu-yx-2013/comments/161713.htmlhttp://www.shnenglu.com/csu-yx-2013/archive/2011/12/08/161713.html#Feedback0http://www.shnenglu.com/csu-yx-2013/comments/commentRss/161713.htmlhttp://www.shnenglu.com/csu-yx-2013/services/trackbacks/161713.htmlhttp://poj.grids.cn/practice/2774

榪欎釜棰樺彲浠ョ敤浜屽垎瑙?铏界劧涔熸湁dp鐨勮В娉曘傚彲鑳界敤浜屽垎瑙h繖涓涓嶆槸寰堟槑鏄?浣嗘槸紜疄鏄彲浠ョ殑銆傛渶澶х殑瑙e氨鏄墍鏈夌殑媯嶅瓙闀?瑕佹眰鐨勬瀛愭暟,鏈灝忕殑瑙f槸0,鐩存帴鍦ㄥ叾涓繘琛屼簩鍒嗗嵆鍙傝繖涓灞炰簬浜屽垎鍑烘渶澶ф弧瓚蟲潯浠剁殑瑙g殑鎯呭喌銆傝繖涓涓轟粈涔堣兘澶熶簩鍒嗕簡銆傛垜鏄繖鏍鋒兂鐨勩傞鍏?瑙g┖闂寸‘瀹炴槸鏈夊簭鐨勫惂,浠庢暟瀛?-鏁板瓧nSum/nK銆傚叾嬈?瀵逛簬浠繪剰涓涓浜庤繖涓寖鍥村唴鐨勬暟瀛?鍙湁婊¤凍鍜屾弧瓚抽鐩姹?縐嶆儏鍐?閭d箞鍜屾垜浠簩鍒嗘暟瀛楁湁浠涔堝尯鍒簡,鎴戜滑浜屽垎涓涓湁搴忔暟緇?鐪嬮噷闈㈡湁娌℃湁鏌愪釜鏁板瓧,鏄笉鏄篃鍙鍒ゆ柇涓媙Mid婊¤凍鏄惁鏉′歡鏄惂銆傛墍浠?榪欎釜棰樻槸鍙互浜屽垎鐨勩備簩鍒嗙殑鏉′歡灝辨槸瑙g┖闂存湁搴忕殑,鎴栬呭彲浠ユ柟渚垮湪瑙g┖闂撮噷闈㈣煩璺冦傝屼笖榪欎釜棰樼殑浜屽垎榪橀渶瑕佺偣鎶宸?鍥犱負鏄煡鎵炬弧瓚蟲潯浠剁殑鏈澶цВ銆?br />
浠g爜:
#include <stdio.h>
#include <string.h>
#include <algorithm>
#define MAX (10000 + 10)
using namespace std;
int nN, nK;
int nWoods[MAX];
bool IsAnsOk(int nAns)
{
    if (nAns == 0)
    {
        return true;
    }
    else
    {
        int nTotal = 0;
        for (int i = nN - 1; i >= 0; --i)
        {
            nTotal += nWoods[i] / nAns;
            if (nTotal >= nK)
            {
                return true;
            }
        }
        return false;
    }
}
int SearchAns(int nMax)
{
    int nBeg = 0, nEnd = nMax;
    while (nBeg <= nEnd)
    {
        int nMid = (nBeg + nEnd) / 2;
        if (IsAnsOk(nMid))
        {
            nBeg = nMid + 1;
        }
        else
        {
            nEnd = nMid - 1;
        }
    }
    return nBeg - 1;
}
int main()
{
    while (scanf("%d%d", &nN, &nK) == 2)
    {
        int nSum = 0;
        for (int i = 0; i < nN; ++i)
        {
            scanf("%d", &nWoods[i]);
            nSum += nWoods[i];
        }
        sort(nWoods, nWoods + nN);
        int nMax = nSum / nK;
        printf("%d\n", SearchAns(nMax));
    }
    return 0;
}

鎵浠?鍙槸鎶?=鎹㈡垚浜咺sAnsOk鍑芥暟璋冪敤鑰屽凡...鑰屼笖鐢變簬榪欐槸鏌ユ壘鏈澶цВ,榪斿洖鍊煎仛浜嗕笅鍙樺寲鑰屽凡...
浠旂粏鍒嗘瀽浜屽垎鐨勫啓娉?鎴戠殑鍙︿竴綃囨枃绔?鏍囬鏄叧浜庡瘑鐮佺殑涓涓В棰樻姤鍛?鏈夎鏄?,
鍏跺疄鍐欏嚭鏌ユ壘鏈澶цВ鍜屾渶灝忚В鐨勪簩鍒嗛兘涓嶆槸浠墮夯鐑︾殑浜嬫儏...


yx 2011-12-08 01:43 鍙戣〃璇勮
]]>
POJ鐧劇粌 - 2814:鎷ㄩ挓闂http://www.shnenglu.com/csu-yx-2013/archive/2011/11/28/161082.htmlyxyxMon, 28 Nov 2011 11:55:00 GMThttp://www.shnenglu.com/csu-yx-2013/archive/2011/11/28/161082.htmlhttp://www.shnenglu.com/csu-yx-2013/comments/161082.htmlhttp://www.shnenglu.com/csu-yx-2013/archive/2011/11/28/161082.html#Feedback0http://www.shnenglu.com/csu-yx-2013/comments/commentRss/161082.htmlhttp://www.shnenglu.com/csu-yx-2013/services/trackbacks/161082.htmlhttp://poj.grids.cn/practice/2814

榪?/a>涓鐩彲浠ユ灇涓炬垨鑰呯洿鎺ユ毚鍔涖備絾鏄?榪欎箣鍓嶅繀欏誨紕鏄庣櫧絳旀鐨勮В絀洪棿銆傘傘備篃灝辨槸瑙e彲鑳界殑鎯呭喌銆傘傘傚緢綆鍗?涓鍏辨湁9縐嶇Щ鍔ㄦ柟妗堛備篃寰堜簡鐒剁殑鐭ラ亾瀵逛簬鏌愮鏂規(guī)浣跨敤N嬈$殑鏁堟灉絳夊悓浜嶯%4鐨勬晥鏋?涔熷氨鏄鏌愮鏂規(guī)鍙彲鑳戒嬌鐢?,1,2,3嬈°傘傘備竴鍏辨湁9縐嶆柟妗?閭d箞涓鍏卞氨鍙湁4^9縐嶅彲鑳界殑瑙c傘傘傝繖涔堝皬鐨勮В絀洪棿,鏃犺鐢ㄤ粈涔堟柟娉曢兘涓嶄細瓚呮椂浜嗐傘傘傛毚鍔涘彲浠ユ墠鐢?閲嶅驚鐜?鎴栬呮繁鎼?褰撴椂瑙夊緱鍐?閲嶅驚鐜槸浠跺緢緋楃殑浜嬫儏,灝辨灉鏂繁鎼滀簡銆傘傘?br />濡傛灉榪欓鎵嶇敤鏋氫婦鐨勬柟娉曠殑璇?鎬濊冩柟寮忚繕鏄偅鏍峰厛紜畾鍋囪瑙g殑閮ㄥ垎鎯呭喌,閫氳繃宸茬粡鐭ラ亾鐨勮鍒欑‘瀹氳В鐨勫叾瀹冩儏鍐?鐒跺悗姹傚嚭榪欎釜瑙?鍒ゆ柇榪欎釜瑙f槸鍚︽弧瓚抽鐩姹傘傘傘傛瘮濡?鎴戜滑鍙互鏋氫婦1,2,3鍙鋒柟妗堢殑鎯呭喌,鏍規(guī)嵁瑙勫垯紜畾鍏跺畠鏂規(guī)鐨勪嬌鐢ㄦ儏鍐?姹傚嚭鎵鏈夋柟妗堢殑浣跨敤鎯呭喌鍚?鍒ゆ柇鍋囪鐨勮В鏄惁婊¤凍瑕佹眰灝卞彲浠ヤ簡...

鎴戞墠鐢ㄧ殑鏄痙fs+鍓灊,榪欎釜棰樼洰鍏跺疄棰樻剰鎴栬呰絳旀鏈夎,鍥犱負絳旀鏄悳绱㈡壘鍒扮涓涓В,鑰屼笉鏄墍璋撶殑鏈鐭簭鍒楃殑瑙?褰撶劧濡傛灉鏁版嵁浣垮緱2鑰呴兘鏄竴鏍風殑璇?閭d箞棰樻剰灝辨棤璇簡...鎴戠殑浠g爜鏄亣璁炬壘鍒扮殑絎竴涓氨鏄渶鐭簭鍒楃殑,榪欑鎯呭喌涓嬫墠鑳戒嬌鐢ㄥ壀鏋?鍥犱負鎵懼埌涓涓В鍚庡氨涓嶉渶瑕佺戶緇壘浜?..


浠g爜濡備笅:
#include <stdio.h>
int nMinTimes;
int nPath[40];
bool bFind = false;
char* szMoves[10] =
{
    NULL,
    "ABDE",
    "ABC",
    "BCEF",
    "ADG",
    "BDEFH",
    "CFI",
    "DEGH",
    "GHI",
    "EFHI"
};
bool IsPosOK(int* nPos)
{
    for (int i = 0; i < 9; ++i)
    {
        if (nPos[i])
        {
            return false;
        }
    }
    return true;
}
void Move(int nChoose, int nTimes, int* nPos)
{
    if (nTimes > 0)
    {
        char* pszStr = szMoves[nChoose];
        while (*pszStr)
        {
            nPos[*pszStr - 'A'] = (nPos[*pszStr - 'A'] + nTimes) % 4;
            ++pszStr;
        }
    }
}
void MoveBack(int nChoose, int nTimes, int* nPos)
{
    if (nTimes > 0)
    {
        char* pszStr = szMoves[nChoose];
        while (*pszStr)
        {
            nPos[*pszStr - 'A'] = (nPos[*pszStr - 'A'] - nTimes + 4) % 4;
            ++pszStr;
        }
    }
}
void Cal(int nChoose, int* nPos, int* nUsed, int nUsedTimes)
{
    if (nChoose == 10)
    {
        if (IsPosOK(nPos) && !bFind)
        {
            nMinTimes = nUsedTimes;
            for (int i = 0; i < nMinTimes; ++i)
            {
                nPath[i] = nUsed[i];
            }
            bFind = true;
        }
        return;
    }
    for (int i = 0; i <= 3; ++i)
    {
        Move(nChoose, i, nPos);
        for (int j = 0; j < i; ++j)//鏀懼叆i嬈$殑nChoose
        {
            nUsed[nUsedTimes + j] = nChoose;
        }
        if (!bFind)
        {
            Cal(nChoose + 1, nPos, nUsed, nUsedTimes + i);
        }
        MoveBack(nChoose, i, nPos);
    }
}
int main()
{
    int nPos[9];
    int nUsed[40];
    for (int i = 0; i < 9; ++i)
    {
        scanf("%d", &nPos[i]);
    }
    Cal(1, nPos, nUsed, 0);
    for (int i = 0; i < nMinTimes; ++i)
    {
        printf("%d", nPath[i]);
        if (i != nMinTimes - 1)
        {
            putchar(' ');
        }
        else
        {
            putchar('\n');
        }
    }
    
    return 0;
}

榪欓亾棰樺叾瀹炴垜wa浜嗚繎10嬈?鍘熷洜灝辨槸Move鍜孧oveBack鍐欓敊浜?娌℃湁縐誨姩nTimes嬈?鑰屽墠闈竴鐩村啓鎴愪簡1,鏄ㄦ櫄wa寰楀疄鍦ㄦ棤璇簡...浠婂ぉ鏅氫笂媯鏌ユ墠紿佺劧鍙戠幇鐨?..
榪欏崐涓鏈堝仛浜?0閬撻浜?閮芥病鏈夋敼鍔ㄨ繖浣庣駭鐨刡ug涔犳儻...瀹炲湪鏃犺...閫掑綊,鍥炴函,鍓灊閮藉啓涓婁簡...鍞?..瀹炲湪鏃犺...榪樹笉濡傜洿鎺?閲嶅驚鐜?澶氱渷蹇?..鐪熶笉璇ユ瑙嗘煇縐嶆柟娉曠殑...


yx 2011-11-28 19:55 鍙戣〃璇勮
]]>
POJ鐧劇粌 - 2804:璇嶅吀http://www.shnenglu.com/csu-yx-2013/archive/2011/11/16/160256.htmlyxyxWed, 16 Nov 2011 05:52:00 GMThttp://www.shnenglu.com/csu-yx-2013/archive/2011/11/16/160256.htmlhttp://www.shnenglu.com/csu-yx-2013/comments/160256.htmlhttp://www.shnenglu.com/csu-yx-2013/archive/2011/11/16/160256.html#Feedback1http://www.shnenglu.com/csu-yx-2013/comments/commentRss/160256.htmlhttp://www.shnenglu.com/csu-yx-2013/services/trackbacks/160256.htmlhttp://poj.grids.cn/practice/2804/

榪?/a>涔熸槸涓涓緢綆鍗曠殑棰樼洰,澶у涓鐪嬮兘鐭ラ亾鐢ㄤ粈涔堟柟娉曚簡,褰撶劧濡傛灉鏄煡鎵劇殑璇?欏哄簭鏌ユ壘鏄笉琛岀殑,
鏂規(guī)硶涓,鏄敤map,寤虹珛涓猰ap<string, string>鐨勫瓧鍏?娉ㄦ剰涓嶈鎯沖綋鐒剁敤map<char*, char*>,
閭f牱寰楀姩鎬佸垎閰嶅唴瀛?鎴栬呰繕鏄厛寮涓ぇ鏁扮粍瀛樺ソ瀛楀吀,鍏剁粨鏋滆繕鏄嫻垂浜嗗唴瀛?..
鎺掑簭+浜屽垎涔熶笉閿欑殑,鍥犱負鏁版嵁閲忕‘瀹炲緢澶?鑰屼笖棰樼洰涔熷緩璁敤c鐨刬o杈撳叆,鎵浠ヨ繖鏍峰啀寤虹珛map<string, string>
涓棿榪樺緱杞崲涓涓?..
鎬諱箣鍋氳繖涓榪樻槸寰堥『鍒╃殑,灝眞a浜嗕竴嬈?鍘熷洜鏄?鍒嗗啓閿欎簡,鎴戜篃寰堜箙娌″湪oj涓婂啓2鍒嗕簡...

浠g爜濡備笅:
#include <stdio.h>
#include <string.h>
#include <algorithm>

#define MAX_WORD_LEN 11
#define MAX_DICTION_ITEM (100000 + 10)

using std::sort;

struct Dictionary
{
    char szWord[MAX_WORD_LEN];
    char szEnglish[MAX_WORD_LEN];
};

Dictionary diction[MAX_DICTION_ITEM];

bool CmpDictionItem(Dictionary one, Dictionary two)
{
    return strcmp(one.szWord, two.szWord) < 0;
}

int FindEnglish(char* pszWord, int nItemNum)
{
    int nBeg = 0, nEnd = nItemNum - 1;
    int nCmp = 0;
    
    while (nBeg <= nEnd)
    {
        int nMid = (nBeg + nEnd) / 2;
        nCmp = strcmp(pszWord, diction[nMid].szWord);
        if (nCmp == 0)
        {
            return nMid;
        }
        else if (nCmp < 0)
        {
            nEnd = nMid - 1;
        }
        else
        {
            nBeg = nMid + 1;
        }
    }
    
    return -1;
}

int main()
{
    char szStr[30];
    char szWord[MAX_WORD_LEN];
    int nCount = 0;
    int nAnsItem = 0;
    
    while (fgets(szStr, 29, stdin), szStr[0] != '\n')
    {
        sscanf(szStr, "%s%s", diction[nCount].szEnglish, diction[nCount].szWord);
        ++nCount;
    }
    sort(diction, diction + nCount, CmpDictionItem);
    while (scanf("%s", szWord) == 1)
    {
        if ((nAnsItem = FindEnglish(szWord, nCount)) != -1)
        {
            printf("%s\n", diction[nAnsItem].szEnglish);
        }
        else
        {
            printf("eh\n"); 
        }
    }
    
    return 0;
}

鍏跺疄鎴戠殑涓昏鐩殑鏄負浜嗘寚鍑轟簩鍒嗙殑鍐欐硶,澶у鐪嬫垜鐨凢indEnglish鍑芥暟,浼犻掔殑鏄暟緇勭殑鍦板潃鍜屾暟緇勭殑闀垮害,
鐒跺悗鎴戝啓鍑芥暟浣撶殑鏃跺欑敤鐨勬槸[]鐨勫艦寮?灝辨槸涓嬬‘鐣?涓婄‘鐣?榪欐牱鏈閲嶈鐨勬槸闇瑕佽冭檻寰幆鐨勬潯浠舵槸<榪樻槸
<=,鍏跺疄榪欎篃寰堝ソ鍒ゆ柇,鍥犱負涓婄晫鍜屼笅鐣岄兘鑳藉鍙栧埌,鎵浠?鏄垚绔嬬殑...鑰屼笖淇敼right鐨勬椂鍊?蹇呴』灝唕ight = mid - 1,
鍘熷洜涔熸槸鍥犱負榪欐槸涓婄‘鐣?
浣嗘槸濡傛灉鏄笂涓嶇‘鐣屼簡,閭d箞絳夊彿灝卞繀欏誨幓鎺?鑰屼笖right涔熷彧鑳戒慨鏀逛負mid,鍥犱負mid-1灝辨槸紜晫浜?鑰宮id鎵嶆槸涓婁笉紜晫...
鎯沖埌榪欎釜紼嬪害鐨勮瘽,浠ュ悗鍐欏彧鏈夊敮涓瑙d簩鍒嗗氨搴旇涓嶄細鍑洪敊浜?..浣嗘槸鍐欐煡鎵炬弧瓚蟲潯浠剁殑鏈澶ф垨鑰呮渶灝忚В鐨勪簩鍒嗚繕闇瑕佸叾瀹冩妧宸?..


yx 2011-11-16 13:52 鍙戣〃璇勮
]]>
国产精品美女久久久免费| 久久久久久久波多野结衣高潮| 亚洲欧洲久久久精品| 2021国产成人精品久久| 久久精品国产99国产精偷 | 久久国产精品成人片免费| 久久亚洲AV成人无码软件| 2021最新久久久视精品爱| 亚洲国产精品嫩草影院久久 | 精品久久久久久久久久久久久久久| 国内精品久久久久伊人av| 国内精品人妻无码久久久影院| 色偷偷88888欧美精品久久久 | 香蕉99久久国产综合精品宅男自 | 久久久久亚洲精品天堂久久久久久 | 一本大道久久a久久精品综合| 精品国产乱码久久久久久1区2区 | 97久久国产综合精品女不卡| 亚洲AV无一区二区三区久久| 久久精品国产亚洲AV无码娇色| 国产精品久久久久久| 久久播电影网| 久久精品国产亚洲AV久| 国产精品久久永久免费| 久久无码一区二区三区少妇 | 亚洲午夜福利精品久久| 亚洲中文字幕无码一久久区| 狠狠色丁香久久婷婷综| 无码人妻少妇久久中文字幕 | 国产亚洲美女精品久久久2020| 2021精品国产综合久久| 久久精品?ⅴ无码中文字幕| 久久中文字幕人妻丝袜| 欧美精品一本久久男人的天堂 | 性欧美丰满熟妇XXXX性久久久 | 久久人妻少妇嫩草AV无码专区| 成人国内精品久久久久影院VR| 久久婷婷国产剧情内射白浆| 久久噜噜电影你懂的| 77777亚洲午夜久久多人| 久久久综合九色合综国产|