• <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 閱讀(427) 評論(0)  編輯 收藏 引用 所屬分類: 搜索
            久久综合九色综合久99| 九九热久久免费视频| 久久综合狠狠综合久久| 成人久久久观看免费毛片 | 久久WWW免费人成—看片| 欧美午夜A∨大片久久| 99久久精品午夜一区二区| 理论片午午伦夜理片久久| 无码精品久久久天天影视| 久久精品国产只有精品66| 久久综合精品国产二区无码| 久久乐国产精品亚洲综合| 国产精品99久久99久久久| 香蕉aa三级久久毛片| 国产福利电影一区二区三区久久老子无码午夜伦不 | 亚洲国产欧洲综合997久久| 久久播电影网| 日韩精品久久久久久| 久久精品国产清自在天天线| 大美女久久久久久j久久| 久久99精品久久久久久久不卡| 久久人人爽人人爽人人片AV东京热 | 久久婷婷五月综合色奶水99啪| 欧美日韩精品久久久久| 亚洲狠狠综合久久| 国产精品福利一区二区久久| 色欲综合久久中文字幕网| 久久久久久伊人高潮影院| 久久亚洲精品国产亚洲老地址| 久久久91人妻无码精品蜜桃HD| 国产成人精品久久亚洲高清不卡| 国产午夜免费高清久久影院 | 久久综合鬼色88久久精品综合自在自线噜噜 | 欧美亚洲国产精品久久久久| 久久夜色精品国产亚洲av| 久久天天躁狠狠躁夜夜不卡| 国产精品99久久久久久董美香| 日本精品久久久久中文字幕| 国产成人香蕉久久久久| 久久精品国产一区二区三区| 亚洲精品无码久久久久AV麻豆|