• <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
            There are two binary strings, their length is 8, you should change the first to the second through several approach. You need output the minimal steps to change them.
            These are the approach legle:
            1.Make the whole string one step to right,the first position should be '1'.
            Example: 10001100---->11000110;
            2.Change two character nearby.
            Example: 10010001---->10001001;
            3.Change four series '1' to '0',or four series '0' to '1'.If the series character longer than four,you can change any four series characters of them.
            Example: 00111101---->00000001;10000011---->11111011;


            Input
            There are many test cases.Every test case contain two 8-binary string,division by space.


            Output
            Every line output a number for the minimal steps to change the two strings.


            Sample Input
            00011110 10000000
            Sample Output
            2
            ?
            ?
            廣度搜索:
            ?
            				
            ??1 #include? < iostream >
            ??2 #include? < queue >
            ??3 #include? < algorithm >
            ??4 using ? namespace ?std;
            ??5 bool ??mark[ 256 ];
            ??6 int ???binary[ 8 ] = {? 1 ,? 2 ,? 4 ,? 8 ,? 16 ,? 32 ,? 64 ,? 128 ?} ;
            ??7 struct ?Node
            ??8 {
            ??9 ???? int ???steps;
            ?10 ???? char ??states[ 9 ];
            ?11 ????Node()
            ?12 ???? {}
            ?13 ????Node(? int ?s,? char ?str[ 9 ]?)
            ?14 ????????:steps(s)
            ?15 ???? {
            ?16 ????????strcpy(?states,?str?);
            ?17 ????}

            ?18 }
            ;
            ?19 int ?getn(? char * ?str?)
            ?20 {
            ?21 ???? int ?total = ? 0 ;
            ?22 ???? for ?(? int ?i = ? 0 ;?i < ? 8 ;? ++ i?)
            ?23 ????????total += ?(?(?str[i] - ? ' 0 ' ?) * ?binary[ 7 - ?i]?);
            ?24 ???? return ?total;
            ?25 }

            ?26 int ?numof0(? char * ?str,? int & ?pos?)
            ?27 {
            ?28 ???? int ?max = ? 0 ;
            ?29 ???? int ?i = ? 0 ;
            ?30 ???? for ?(? int ?i = ? 0 ;?i <= ? 4 ;? ++ i?)
            ?31 ???? {
            ?32 ???????? int ?t = ?i;
            ?33 ???????? int ?total = ? 0 ;
            ?34 ???????? while ?(?str[t] == ? ' 0 ' ?)
            ?35 ???????? {
            ?36 ????????????t ++ ;
            ?37 ????????????total ++ ;
            ?38 ????????}

            ?39 ???????? if ?(?total > ?max?)
            ?40 ???????? {
            ?41 ????????????max = ?total;
            ?42 ????????????pos = ?i;
            ?43 ????????}

            ?44 ????}

            ?45 ???? return ?max;
            ?46 }

            ?47 int ?numof1(? char * ?str,? int & ?pos?)
            ?48 {
            ?49 ???? int ?max = ? 0 ;
            ?50 ???? int ?i = ? 0 ;
            ?51 ???? for ?(? int ?i = ? 0 ;?i <= ? 4 ;? ++ i?)
            ?52 ???? {
            ?53 ???????? int ?t = ?i;
            ?54 ???????? int ?total = ? 0 ;
            ?55 ???????? while ?(?str[t] == ? ' 1 ' ?)
            ?56 ???????? {
            ?57 ????????????t ++ ;
            ?58 ????????????total ++ ;
            ?59 ????????}

            ?60 ???????? if ?(?total > ?max?)
            ?61 ???????? {
            ?62 ????????????max = ?total;
            ?63 ????????????pos = ?i;
            ?64 ????????}

            ?65 ????}

            ?66 ???? return ?max;
            ?67 }

            ?68 int ?main()
            ?69 {
            ?70 ???? char ???source[ 9 ];
            ?71 ???? char ???dest[ 9 ];
            ?72 ???? while ?(?scanf( " %s%s " ,source,?dest) != ?EOF?)
            ?73 ???? {
            ?74 ????????queue < Node > ?q;
            ?75 ????????q.push?(?Node( 0 ,source)?);
            ?76 ????????memset(?mark,? false ,? sizeof (mark)?);
            ?77 ????????mark[?getn(source)?] = ? true ;
            ?78 ???????? while ?(? ! q.empty?()?)
            ?79 ???????? {
            ?80 ???????????? struct ?Node?head = ?q.front?();
            ?81 ???????????? char ???temp[ 9 ];
            ?82 ???????????? int ????n;
            ?83 ????????????q.pop?();
            ?84 ???????????? if ?(?strcmp(?head.states,?dest?) == ? 0 ?)
            ?85 ???????????? {
            ?86 ????????????????printf( " %d\n " ,head.steps?);
            ?87 ???????????????? break ;
            ?88 ????????????}

            ?89 ????????????
            ?90 ????????????strcpy(?temp,?head.states?);
            ?91 ???????????? for ?(? int ?i = ? 7 ;?i > ? 0 ;?i -- ?)
            ?92 ????????????????temp[i] = ?temp[i - 1 ];
            ?93 ????????????temp[ 0 ] = ? ' 1 ' ;
            ?94 ????????????n = ?getn(temp);
            ?95 ???????????? if ?(? ! mark[n]?)
            ?96 ???????????? {
            ?97 ????????????????q.push?(?Node(?head.steps + ? 1 ,?temp?)?);
            ?98 ????????????????mark[n] = ? true ;
            ?99 ????????????}

            100 ???????????? for (? int ?i = ? 0 ;?i < ? 7 ;? ++ i?)
            101 ???????????? {
            102 ????????????????strcpy(?temp,?head.states?);
            103 ???????????????? if ?(?temp[i] != ?temp[i + 1 ]?)
            104 ???????????????? {
            105 ????????????????????std::swap?(?temp[i],?temp[i + 1 ]?);
            106 ????????????????????n = ?getn(temp);
            107 ???????????????????? if ?(? ! mark[n]?)
            108 ???????????????????? {
            109 ????????????????????????q.push?(?Node(?head.steps + ? 1 ,?temp?)?);
            110 ????????????????????????mark[n] = ? true ;
            111 ????????????????????}

            112 ????????????????}

            113 ????????????}

            114 ???????????? int ?pos;
            115 ???????????? int ?num = ?numof0(?head.states,?pos?);
            116 ???????????? if ?(?num >= ? 4 ?)
            117 ???????????? {
            118 ???????????????? for ?(? int ?i = ?pos;?i <= ?num - ? 4 + ?pos;? ++ i?)
            119 ???????????????? {
            120 ????????????????????strcpy(?temp,?head.states?);
            121 ???????????????????? for ?(? int ?j = ?i;?j < ?i + ? 4 ;? ++ j?)
            122 ????????????????????????temp[j] = ? ' 1 ' ;
            123 ????????????????????n = ?getn(temp);
            124 ???????????????????? if ?(? ! mark[n]?)
            125 ???????????????????? {
            126 ????????????????????????q.push?(?Node(?head.steps + ? 1 ,?temp?)?);
            127 ????????????????????????mark[n] = ? true ;
            128 ????????????????????}

            129 ????????????????}
            ????
            130 ????????????}

            131 ????????
            132 ????????????num = ?numof1(?head.states,?pos?);
            133 ???????????? if ?(?num >= ? 4 ?)
            134 ???????????? {????????
            135 ???????????????? for ?(? int ?i = ?pos;?i <= ?num - ? 4 + ?pos;? ++ i?)
            136 ???????????????? {
            137 ????????????????????strcpy(?temp,?head.states?);
            138 ???????????????????? for ?(? int ?j = ?i;?j < ?i + ? 4 ;? ++ j?)
            139 ????????????????????????temp[j] = ? ' 0 ' ;
            140 ????????????????????n = ?getn(temp);
            141 ???????????????????? if ?(? ! mark[n]?)
            142 ???????????????????? {
            143 ????????????????????????q.push?(?Node(?head.steps + ? 1 ,?temp?)?);
            144 ????????????????????????mark[n] = ? true ;
            145 ????????????????????}

            146 ????????????????}

            147 ????????????}

            148 ????????}
            // ??while?q.empty();
            149 ????}

            150 ???? return ? 0 ;
            151 }

            152
            posted on 2008-08-18 20:14 Darren 閱讀(289) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 搜索
            国产成人精品综合久久久| 99国产精品久久| 亚洲国产一成人久久精品| 国产精品久久久久aaaa| 国产伊人久久| 久久ZYZ资源站无码中文动漫| 国产精品久久久天天影视| 亚洲人成无码www久久久| 国产婷婷成人久久Av免费高清| 激情五月综合综合久久69| 色综合久久中文字幕无码| 久久久99精品成人片中文字幕| 伊人久久综合无码成人网| 久久无码人妻精品一区二区三区 | 国产精品99久久免费观看| 久久久久综合国产欧美一区二区| 亚洲va国产va天堂va久久| 亚洲午夜精品久久久久久app| 国产精品久久久久影院嫩草| 无码人妻久久一区二区三区蜜桃| 欧美精品一区二区精品久久| 中文字幕日本人妻久久久免费 | 99国产精品久久| 精品国产乱码久久久久软件| 日日狠狠久久偷偷色综合96蜜桃 | 伊人久久综合无码成人网| 青青热久久国产久精品| 久久九九免费高清视频 | 伊人情人综合成人久久网小说| 久久亚洲国产午夜精品理论片| 久久一日本道色综合久久| 国内精品伊人久久久影院 | 色欲综合久久躁天天躁| 亚洲日本va午夜中文字幕久久| 久久久久久A亚洲欧洲AV冫| 国内精品伊人久久久久网站| 国产三级观看久久| 亚洲欧美日韩精品久久亚洲区| 亚洲国产天堂久久综合| 久久久久久久女国产乱让韩| 久久夜色精品国产噜噜噜亚洲AV |