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

            Problem description

            Now an emergent task for you is to open a password lock. The password is consisted of four digits. Each digit is numbered from 1 to 9.
            Each time, you can add or minus 1 to any digit. When add 1 to '9', the digit will change to be '1' and when minus 1 to '1', the digit will change to be '9'. You can also exchange the digit with its neighbor. Each action will take one step.

            Now your task is to use minimal steps to open the lock.

            Note: The leftmost digit is not the neighbor of the rightmost digit.


            ?
            Input
            The input file begins with an integer T, indicating the number of test cases.

            Each test case begins with a four digit N, indicating the initial state of the password lock. Then followed a line with anotther four dight M, indicating the password which can open the lock. There is one blank line after each test case.


            ?
            Output
            For each test case, print the minimal steps in one line.


            Sample Input
            2
            1234
            2144

            1111
            9999
            ?
            Sample Output
            2
            4




            廣度搜索:

            ??1 #include? < iostream >
            ??2 #include? < queue >
            ??3 #include? < algorithm >
            ??4
            ??5 using ? namespace ?std;
            ??6
            ??7 bool ??mark[ 10000 ];
            ??8
            ??9 struct ?Node
            ?10 {
            ?11 ???? int ???step;
            ?12 ???? char ??state[ 5 ];
            ?13
            ?14 ????Node()
            ?15 ???? {}
            ?16
            ?17 ????Node(? int ?i,? char * ?str?)
            ?18 ????????:step(i)
            ?19 ???? {
            ?20 ????????strcpy(?state,?str?);
            ?21 ????}

            ?22 }
            ;
            ?23
            ?24
            ?25 int ?getn(? char ?str[ 5 ]?)
            ?26 {
            ?27 ???? return ?(str[ 0 ] - ? ' 0 ' ) * ? 1000 + ?(?str[ 1 ] - ? ' 0 ' ?) * ? 100 + ?(?str[ 2 ] - ? ' 0 ' ?) * ? 10 + ?(str[ 3 ] - ? ' 0 ' ?);
            ?28 }

            ?29
            ?30
            ?31 int ?main()
            ?32 {
            ?33 ???? char ????initial[ 5 ];
            ?34 ???? char ????open[ 5 ];
            ?35 ???? int ?????Cases;
            ?36
            ?37 ????scanf( " %d " , & Cases);
            ?38 ???? while ?(?Cases -- ?)
            ?39 ???? {
            ?40 ????????memset(?mark,? false ,? sizeof (mark)?);
            ?41
            ?42 ????????queue < struct ?Node > ??q;
            ?43 ????????scanf( " %s%s " ,initial,open);
            ?44
            ?45 ????????q.push?(?Node( 0 ,initial)?);
            ?46 ????????mark[?getn(initial)?] = ? true ;
            ?47
            ?48 ???????? while ?(? ! q.empty?()?)
            ?49 ???????? {
            ?50 ???????????? struct ?Node?head = ?q.front?();
            ?51 ????????????q.pop?();
            ?52
            ?53 ???????????? if ?(?strcmp(?head.state?,?open) == ? 0 ?)
            ?54 ???????????? {
            ?55 ????????????????printf( " %d " ,head.step?);
            ?56 ???????????????? break ;
            ?57 ????????????}

            ?58
            ?59 ???????????? for ?(? int ?i = ? 0 ;?i < ? 3 ;? ++ i?)
            ?60 ???????????? {????????
            ?61 ???????????????? char ?temp[ 5 ];
            ?62 ????????????????strcpy(?temp,?head.state?);
            ?63
            ?64 ????????????????std::swap?(?temp[i],?temp[i + 1 ]?);
            ?65 ???????????????? if ?(? ! mark[?getn(temp)?]?)
            ?66 ???????????????? {
            ?67 ????????????????????q.push?(?Node(head.step + ? 1 ,?temp?)?);
            ?68 ????????????????????mark[?getn(temp)?] = ? true ;
            ?69 ????????????????}

            ?70 ????????????}

            ?71
            ?72 ???????????? for ?(? int ?i = ? 0 ;?i < ? 4 ;? ++ i?)
            ?73 ???????????? {
            ?74 ???????????????? char ?temp[ 5 ];
            ?75 ????????????????strcpy(?temp,?head.state?);
            ?76
            ?77 ???????????????? if ?(?temp[i] == ? ' 9 ' ?)?temp[i] = ? ' 1 ' ;
            ?78 ???????????????? else ?temp[i] = ?temp[i] + ? 1 ;
            ?79
            ?80 ???????????????? int ?n = ?getn(temp);
            ?81 ???????????????? if ?(? ! mark[n]?)
            ?82 ???????????????? {
            ?83 ????????????????????q.push?(?Node(?head.step + ? 1 ,?temp?)?);
            ?84 ????????????????????mark[n] = ? true ;
            ?85 ????????????????}

            ?86 ????????????}

            ?87
            ?88 ???????????? for ?(? int ?i = ? 0 ;?i < ? 4 ;? ++ i?)
            ?89 ???????????? {
            ?90 ???????????????? char ?temp[ 5 ];
            ?91 ????????????????strcpy(?temp,?head.state?);
            ?92
            ?93 ???????????????? if ?(?temp[i] == ? ' 1 ' ?)?temp[i] = ? ' 9 ' ;
            ?94 ???????????????? else ?temp[i] = ?temp[i] - ? 1 ;
            ?95
            ?96 ???????????????? int ?n = ?getn(temp);
            ?97 ???????????????? if ?(? ! mark[n]?)
            ?98 ???????????????? {
            ?99 ????????????????????q.push?(?Node(?head.step + ? 1 ,?temp?)?);
            100 ????????????????????mark[n] = ? true ;
            101 ????????????????}

            102 ????????????}

            103 ????????}

            104
            105 ???????? if ?(?Cases?)?printf( " \n " );
            106 ????}

            107
            108 ???? return ? 0 ;
            109 }

            110
            posted on 2008-08-19 16:38 Darren 閱讀(424) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 搜索
            久久无码人妻一区二区三区午夜| 精品伊人久久大线蕉色首页| 日韩精品国产自在久久现线拍| 狠狠色婷婷综合天天久久丁香 | 久久国产三级无码一区二区 | 国产精品久久久香蕉| 女同久久| 国产Av激情久久无码天堂| 99久久精品国产一区二区蜜芽| 精品久久久一二三区| 久久综合综合久久97色| 国产69精品久久久久APP下载 | 亚洲愉拍99热成人精品热久久| 久久久久无码精品国产| 久久久久国产精品麻豆AR影院| 久久久久亚洲AV无码网站| 女同久久| 久久99精品国产99久久6| 国内精品久久久久久99| 香蕉99久久国产综合精品宅男自| 97久久超碰国产精品2021| 色婷婷久久综合中文久久一本| 久久精品国产一区二区三区日韩| 久久综合亚洲鲁鲁五月天| 久久久久国产一区二区| 久久免费小视频| 国内精品久久久久影院免费| 精品一二三区久久aaa片| 伊人色综合久久天天网| 久久久久亚洲AV无码去区首| 93精91精品国产综合久久香蕉| 国产一级持黄大片99久久| 国内精品久久久久影院优| 久久久久亚洲AV无码永不| 亚洲AV无码成人网站久久精品大| 亚洲国产综合久久天堂| 无码人妻少妇久久中文字幕| 伊人色综合久久天天网| 欧美亚洲国产精品久久久久| 亚洲国产高清精品线久久| 久久久不卡国产精品一区二区|