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

            巢穴

            about:blank

            P2965

               位運(yùn)算+bfs
               本來用iterator來做隊(duì)列的指針,但是莫名其妙的錯(cuò)誤..
               于是用了int來做指針..安心啊.
              
            #include <iostream>
            #include 
            <vector>
            using namespace std;
            bool hash[65536];

            vector
            <int> answer;
            int fstate[16]={
            0xF888,0xF444,0xF222,0xF111,
            0x8F88,0x4F44,0x2F22,0x1F11,
            0x88F8,0x44F4,0x22F2,0x11F1,
            0x888F,0x444F,0x222F,0x111F}
            ;



            struct state
            {
             
            int value;
             
            int change;
             
            int father;
             
            }
            ;

            vector
            <state> list;
            void jude(int v)
            {
                 
            if (v==0)
                 
            {
                  
            int iter=list.size()-1;
                  
                  
            while(iter!=0)
                  
            {
                      answer.push_back(list.at(iter).change);
                      iter
            =list.at(iter).father;
                  }

                  cout
            <<answer.size()<<endl;
                  
            for (int i=answer.size()-1;i>=0;--i)
                  
            {
                      cout
            <<answer.at(i)/4+1<<" "<<answer.at(i)%4+1<<endl;
                  }

                  
            int cc;cin>>cc;
                  exit(
            0);
                 }

            }

            void init()
            {
                 
            int x=0,u=1;
                 
            for (int i=0;i<4;i++)
                     
            for (int j=0;j<4;j++)
                     
            {
                         
            char ch;
                         cin
            >>ch;
                         
            int k;
                         
            switch(ch)
                         
            {
                           
            case '-':k=0;break;
                           
            case '+':k=1;break;
                           
            default:break;
                         }

                         x
            =x*2+k;
                     }

                

                 hash[x]
            =true;
                 state st;
                 st.value
            =x;
                 st.change
            =-1;
                 st.father
            =0;
                 list.push_back(st);
                
                 jude(x);
                 
            }

            void bfs()
            {
                 vector
            <state>::iterator iter=list.begin();
                 
            int left=0;
                  
                 
                 
            while (left<list.size())
                 
            {
                       state st
            =list.at(left);
                       
            int value=st.value;

                       
            for (int i=0;i<16;i++)
                       
            {
                           
                        
            int n=fstate[i]^value;
                        
                        
            if (hash[n]) continue;

                        state sta;
                        sta.value
            =n;
                        sta.father
            =left;
                        sta.change
            =i;
                        hash[n]
            =true;
                        list.push_back(sta);
                        jude(n);
                       }

                       left
            ++;
                       
                 }

            }

            int main()
            {
                init();
                bfs();
                
            return 0;
            }

            posted on 2009-10-01 16:13 Vincent 閱讀(125) 評論(0)  編輯 收藏 引用 所屬分類: 數(shù)據(jù)結(jié)構(gòu)與算法

            久久亚洲高清综合| 欧美激情精品久久久久| 久久综合狠狠综合久久97色| 久久婷婷五月综合97色一本一本| 2020久久精品亚洲热综合一本| 亚洲美日韩Av中文字幕无码久久久妻妇| 国产午夜精品理论片久久| 亚洲综合久久综合激情久久| 久久线看观看精品香蕉国产| 久久亚洲高清观看| 丰满少妇人妻久久久久久4| 国产午夜精品久久久久九九电影 | 亚洲国产精品久久久久网站| 精品久久无码中文字幕| 国产精品一久久香蕉产线看| 亚洲国产成人久久笫一页| 日本精品久久久久久久久免费| 一本久道久久综合狠狠躁AV| av色综合久久天堂av色综合在| 久久人人爽人人爽人人片av高请| 久久精品国产亚洲AV电影| 99久久精品国产一区二区| 欧美亚洲日本久久精品| 中文字幕久久久久人妻| 99re久久精品国产首页2020| 99久久综合狠狠综合久久| 少妇无套内谢久久久久| 国产精品久久久久…| 日韩久久无码免费毛片软件| 亚洲av日韩精品久久久久久a| 久久综合丁香激情久久| 久久久久久免费视频| 精品国产一区二区三区久久| 久久综合久久性久99毛片| 日韩精品久久无码人妻中文字幕| 狠狠色综合久久久久尤物| 久久久精品国产免大香伊| 93精91精品国产综合久久香蕉| 久久久久国产精品人妻| 久久久91人妻无码精品蜜桃HD| 热re99久久精品国99热|