青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

單鏈DNA

換了個地址:http://www.cnblogs.com/vizhen/

 

HDOJ 1195 Open the Lock--BFS


題目:http://acm.hdu.edu.cn/showproblem.php?pid=1195

問題大意:有一個四位的數字,要用最少的變化次數將其變成目標數字,變換方式三種,每次只能使用一種變換方式,對一位進行操作。

算法大意:
    1.和洋蔥同學討論之后, 直接把每一步的所有情況窮舉出來,因為每一步實際上只有11種方式而已,這樣之后,就有了一個新的狀態,然后在此狀態上繼續窮舉,直到達到目標狀態。
    2.利用BFS可以方便的遍歷到沒一步的所有狀態,把每一步新的狀態壓入隊列中。
    3.記錄每一個新的狀態,當下次遍歷到的時候,即可直接跳過。

源代碼:
  1 /*
  2    算法思想:利用BFS進行窮舉。從一步窮舉到N步。
  3    剪掉重復的很重要
  4    catch 中有些設計上的失誤
  5 */
  6 #include<iostream>
  7 #include<queue>
  8 using namespace std;
  9 int s[4],ds[4];
 10 
 11 
 12 int BfsSearch(int vist[])
 13 {
 14     queue<int>q;
 15     int tmp[5];
 16     int step=0;
 17 
 18     q.push(s[0]);
 19     q.push(s[1]);
 20     q.push(s[2]);
 21     q.push(s[3]);
 22     q.push(0);
 23 
 24     while(!q.empty())
 25     {
 26         int a,b,c,d;
 27         
 28         a=tmp[0]=q.front();
 29         q.pop();
 30             b=tmp[1]=q.front();
 31         q.pop();
 32         c=tmp[2]=q.front();
 33         q.pop();
 34         d=tmp[3]=q.front();
 35         q.pop();
 36                 step=q.front();
 37         q.pop();
 38 
 39         for(int i=0;i<11;i++)
 40         {
 41             switch(i)
 42             {
 43               case 0:
 44                   {
 45                       if(tmp[0]>8) a=1;
 46                       else a++;
 47                       b=tmp[1];c=tmp[2];d=tmp[3];
 48                   }break;
 49               case 1:
 50                   {
 51                       if(tmp[1]>8) b=1;
 52                       else b++;
 53                       a=tmp[0];c=tmp[2];d=tmp[3];
 54                   }break;
 55               case 2:
 56                   {
 57                       if(tmp[2]>8) c=1;
 58                       else c++;
 59                       a=tmp[0];b=tmp[1];d=tmp[3];
 60                   }break;
 61               case 3:
 62                   {
 63                       if(tmp[3]>8) d=1;
 64                       else d++;
 65                       a=tmp[0];b=tmp[1];c=tmp[2];
 66                   }break;
 67               case 4:
 68                   {
 69                       
 70                       if(tmp[0]<2) a=9;
 71                       else a--;
 72                       b=tmp[1];c=tmp[2];d=tmp[3];
 73                   }break;
 74               case 5:
 75                   {
 76                       if(tmp[1]<2) b=9;
 77                       else b--;
 78                       a=tmp[0];c=tmp[2];d=tmp[3];
 79                   }break;
 80               case 6:
 81                    {
 82                       if(tmp[2]<2) c=9;
 83                       else c--;
 84                       a=tmp[0];b=tmp[1];d=tmp[3];
 85                   }break;
 86               case 7:
 87                    {
 88                       if(tmp[3]<2) d=9;
 89                       else d--;
 90                       a=tmp[0];b=tmp[1];c=tmp[2];
 91                   }break;
 92               case 8:
 93                   {
 94                       int t;
 95                       a=tmp[0];
 96                       b=tmp[1];
 97                       c=tmp[2];
 98                       d=tmp[3];
 99                       if(a==b) continue;
100                       t=a;
101                       a=b;
102                       b=t;
103                   }break;
104               case 9:
105                    {
106                       int t;
107                       a=tmp[0];
108                       b=tmp[1];
109                       c=tmp[2];
110                       d=tmp[3];
111 
112                       if(b==c) continue;
113                       t=b;
114                       b=c;
115                       c=t;
116                    }break;
117               case 10:
118                   {
119                       int t;
120                       a=tmp[0];
121                       b=tmp[1];
122                       c=tmp[2];
123                       d=tmp[3];
124 
125                       if(c==d) continue;
126                       t=c;
127                       c=d;
128                       d=t;
129                   }break;
130             }//switch
131 
132            
133             if(a==ds[0]&&b==ds[1]&&c==ds[2]&&d==ds[3])
134            {
135                return step+1;
136            }
137        
138             if(vist[d+c*10+b*100+a*1000])//如果重復則不壓入隊列 很重要
139             {
140                 continue;
141             }
142            else
143            {
144               
145                vist[d+c*10+b*100+a*1000]=1;
146                q.push(a);
147                q.push(b);
148                q.push(c);
149                q.push(d);
150                q.push(step+1);
151            }//else
152 
153         }//for
154 
155     }//while
156 
157 }//bfs
158 
159 int main()
160 {
161 
162     int t,k;
163     int m,n;
164     cin>>t;
165     while(t--)
166     {
167         int vist[10000]={0};
168         cin>>m>>n;
169         s[0]=m/1000;
170         s[1]=m/100%10;
171         s[2]=m/10%10;
172         s[3]=m%10;
173 
174         ds[0]=n/1000;
175         ds[1]=n/100%10;
176         ds[2]=n/10%10;
177         ds[3]=n%10;
178     
179       k=BfsSearch(vist);
180       cout<<k<<endl;
181     }
182 
183 
184     return 0;
185 }

 
個人體會:BFS的應用真是神奇。

posted on 2010-07-20 16:06 Geek.tan 閱讀(1336) 評論(0)  編輯 收藏 引用 所屬分類: ACM解題報告

導航

統計

公告

coding是我的寂寞,我是誰的寂寞

隨筆分類(40)

隨筆檔案(48)

搜索

積分與排名

最新評論

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国语对白精品一区二区| 美女被久久久| 国产婷婷精品| 欧美午夜一区二区三区免费大片 | 亚洲高清自拍| 国产主播一区| 黄色精品一二区| 红桃视频欧美| 亚洲国产老妈| 亚洲香蕉在线观看| 亚洲人人精品| 国产精品爽爽爽| 欧美日韩免费一区二区三区视频 | 久久成人精品视频| 亚洲精品自在在线观看| 国产亚洲一区二区三区在线观看| 欧美精品手机在线| 欧美视频中文在线看| 国产精品一区视频网站| 韩日欧美一区| 日韩一级大片| 欧美一区二区在线免费观看| 久久久青草青青国产亚洲免观| 欧美激情精品久久久久久大尺度| av成人动漫| 欧美一区二区三区精品 | 在线亚洲观看| 午夜精品久久久久久久| 久久一区激情| 欧美日韩专区在线| 激情一区二区| 午夜精品久久久久久久99黑人| 久久免费精品日本久久中文字幕| 亚洲国产人成综合网站| 亚洲天堂偷拍| 欧美第一黄色网| 韩国av一区| 小黄鸭视频精品导航| 亚洲高清视频中文字幕| 欧美综合激情网| 国产精品久久久久91| 91久久久久久| 久久婷婷丁香| 欧美一区二区三区另类| 国产精品看片你懂得| 夜夜嗨网站十八久久| 欧美激情精品久久久久久大尺度| 久久久99爱| 国产亚洲精品久久久久婷婷瑜伽| 亚洲视频在线观看视频| 你懂的视频欧美| 久久精品国产91精品亚洲| 国产精品丝袜xxxxxxx| 制服丝袜亚洲播放| 亚洲二区视频| 欧美成人一区二区| 亚洲精品久久久久久久久久久久久 | 国产欧美日韩91| 亚洲欧美影院| 亚洲图片欧美日产| 欧美日韩一区视频| 国内成人在线| 欧美中文字幕不卡| 欧美色视频日本高清在线观看| 亚洲欧洲一区二区在线播放| 久久综合色8888| 亚洲欧美日韩视频二区| 国产精品亚洲激情| 欧美一区二区视频在线观看| 亚洲先锋成人| 国产精品久久久久影院亚瑟| 中文av字幕一区| 一区二区欧美在线| 国产精品一区二区三区四区| 亚洲欧美日韩一区二区在线 | 国产一区二区三区四区五区美女 | 国产精品久久二区二区| 日韩一级黄色大片| 欧美波霸影院| 久久综合久久综合久久| 亚洲人成毛片在线播放| 亚洲黄色天堂| 欧美三级电影大全| 亚洲女女女同性video| 亚洲欧美日韩爽爽影院| 国产一区二区精品丝袜| 快播亚洲色图| 欧美激情一区| 亚洲欧美日韩精品在线| 久久理论片午夜琪琪电影网| 99精品视频免费观看视频| 亚洲一区二区免费视频| 怡红院精品视频| 一本大道久久精品懂色aⅴ| 国产午夜精品麻豆| 亚洲国产欧美另类丝袜| 国产免费观看久久黄| 亚洲动漫精品| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲高清不卡在线| 国产精品久久久久影院色老大| 久久夜色精品| 欧美午夜激情在线| 美女日韩欧美| 国产精品男女猛烈高潮激情| 女人天堂亚洲aⅴ在线观看| 国产精品爱久久久久久久| 男人天堂欧美日韩| 国产日韩欧美视频在线| 日韩视频一区二区| 在线观看日韩av| 久久久久久电影| 一区二区三区波多野结衣在线观看| 国产亚洲制服色| 一本色道久久88综合亚洲精品ⅰ| 好吊妞**欧美| 香蕉久久久久久久av网站| 在线一区二区三区做爰视频网站| 久久精品一区二区三区四区| 亚洲欧美第一页| 欧美日韩黄色一区二区| 欧美国产日韩亚洲一区| 国产视频久久久久| 亚洲午夜免费视频| 中国亚洲黄色| 欧美日韩成人精品| 亚洲国产高清aⅴ视频| 亚洲高清视频在线观看| 久久国产欧美日韩精品| 欧美在线观看一二区| 国产精品久在线观看| 宅男精品导航| 亚洲自拍三区| 国产精品国产一区二区| 亚洲深夜av| 亚洲欧美视频在线观看视频| 欧美午夜美女看片| 一区二区三区精品| 亚洲永久免费观看| 国产精品高潮呻吟久久av黑人| 亚洲毛片在线观看.| 在线午夜精品| 国产精品高潮在线| 亚洲无人区一区| 欧美专区福利在线| 国产一区视频观看| 欧美在线一级视频| 久久久久亚洲综合| 一区一区视频| 欧美成人精品一区二区| 91久久黄色| 99xxxx成人网| 欧美午夜不卡在线观看免费 | 亚洲专区一区二区三区| 国产精品综合网站| 午夜精品理论片| 久久久久久亚洲精品中文字幕 | 亚洲视频www| 久久国产天堂福利天堂| 韩国女主播一区| 老司机精品久久| 亚洲欧洲综合另类| 一区二区久久久久久| 国产精品区一区二区三区| 亚洲欧美亚洲| 欧美电影在线播放| 亚洲卡通欧美制服中文| 欧美日韩在线播放三区四区| 亚洲与欧洲av电影| 久久综合狠狠| 在线视频欧美日韩| 国产一区二区三区精品欧美日韩一区二区三区| 久久男女视频| 午夜日韩av| 国产精品老牛| 久久综合网络一区二区| 亚洲免费观看在线视频| 欧美一区二区性| 亚洲精品网站在线播放gif| 国产精品免费观看在线| 久久久久久久尹人综合网亚洲| 亚洲欧洲精品一区二区| 亚洲欧美日本精品| 亚洲国产成人av在线| 国产精品海角社区在线观看| 久久久久久久久久久久久久一区| 亚洲精品中文字幕女同| 另类春色校园亚洲| 亚洲在线一区二区三区| 亚洲三级免费观看| 国产亚洲欧洲| 国产精品99免视看9| 欧美成人一品| 久久久精品网| 亚洲淫片在线视频| 日韩视频一区二区三区在线播放免费观看| 久久精品一区二区三区不卡| 一区二区三区www| 一区二区三区在线视频播放| 国产精品扒开腿爽爽爽视频|