• <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 閱讀(418) 評論(0)  編輯 收藏 引用 所屬分類: 搜索
            亚洲国产精品热久久| 久久强奷乱码老熟女网站| 91视频国产91久久久| 国产精品99久久精品| 激情久久久久久久久久| 国产精自产拍久久久久久蜜| 久久强奷乱码老熟女网站| 亚洲国产成人久久综合一区77| 无码人妻久久一区二区三区免费 | 久久精品99久久香蕉国产色戒 | 久久精品中文无码资源站| 亚洲AV无码久久| 性做久久久久久久久老女人| 久久国产精品成人片免费| 久久久免费观成人影院| 久久精品www人人爽人人| 午夜精品久久久内射近拍高清 | 久久国产精品视频| 亚洲av成人无码久久精品| 精品久久久久久99人妻| 国内精品人妻无码久久久影院| 久久天天躁狠狠躁夜夜2020老熟妇 | 大美女久久久久久j久久| 亚洲国产精品无码久久久秋霞2 | 亚洲性久久久影院| 久久婷婷久久一区二区三区| 精品国产乱码久久久久久呢 | segui久久国产精品| 久久久久无码精品国产不卡| 久久午夜福利无码1000合集| 久久人人超碰精品CAOPOREN| 色综合久久88色综合天天| 久久99精品久久久久久hb无码| 一级女性全黄久久生活片免费| 999久久久国产精品| 丁香久久婷婷国产午夜视频| 99热热久久这里只有精品68| 久久精品国产黑森林| 久久www免费人成精品香蕉| 精品多毛少妇人妻AV免费久久| segui久久国产精品|