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

ACTime

let's start
隨筆 - 10, 文章 - 22, 評(píng)論 - 2, 引用 - 0
數(shù)據(jù)加載中……

POJ 3083 Children of the Candy Corn(bfs求最短路/迷宮)

題目鏈接:http://acm.pku.edu.cn/JudgeOnline/problem?id=3083
題目描述:求最短路,求沿特定方向走迷宮的步數(shù)
所用算法:最短路用bfs求,特定方向走迷宮直接用while計(jì)數(shù)(這里寫(xiě)的比較繁瑣,要細(xì)心,本來(lái)看題目分類是在dfs里面的,以為這要用dfs,細(xì)想想不用,而求迷宮最短路徑,bfs應(yīng)該是首選了)
提交情況:1次wa(忘了加<stdio.h>頭文件),一次re(在隊(duì)列數(shù)組開(kāi)的太小)
心得體會(huì):好久沒(méi)有做迷宮題了,今天做了一道,各種別扭。題目不難,仔細(xì)讀題就可以了。求最短路實(shí)際上就是個(gè)模板,和2251一樣。中間寫(xiě)完還出現(xiàn)段錯(cuò)誤的情況,是用gets/fgets()讀map造成的,然后我就改成了逐行讀字符串。題目數(shù)據(jù)并不大,因?yàn)楸┧岩?ms就過(guò)了,但很納悶為什么這個(gè)數(shù)據(jù)規(guī)模隊(duì)列開(kāi)成1000就re,其實(shí)也差不多了,40*40無(wú)非就1600種情況而已,下次開(kāi)數(shù)組時(shí)不能想當(dāng)然,一定要走腦子后再開(kāi)。
1 #include<iostream> 2 #include<stdio.h> 3 using namespace std; 4 5 #define EAST 1 6 #define WEST 2 7 #define SOUTH 3 8 #define NORTH 4 9 10 char map[100][100]; 11 struct pos 12 { 13 int x; 14 int y; 15 int pre; 16 }; 17 18 int w; 19 int h; 20 21 pos queue[20000]; 22 23 const int d1[]={1,-1,0,0}; 24 const int d2[]={0,0,1,-1}; 25 int bfs(int x,int y) 26 { 27 int head=0; 28 int tail=0; 29 queue[tail].x=x; 30 queue[tail].y=y; 31 queue[tail].pre=-1; 32 tail++; 33 pos temp; 34 pos next; 35 int step=0; 36 while(head!=tail) 37 { 38 temp.x=queue[head].x; 39 temp.y=queue[head].y; 40 head++; 41 for(int i=0;i<4;i++) 42 { 43 next.x=temp.x+d1[i]; 44 next.y=temp.y+d2[i]; 45 next.pre=head-1; 46 47 if(next.x>=0&&next.x<h&&next.y>=0&&next.y<w&&map[next.x][next.y]=='E') 48 { 49 goto END; 50 } 51 52 if(next.x>=0&&next.x<h&&next.y>=0&&next.y<w&&map[next.x][next.y]!='#') 53 { 54 queue[tail].x=next.x; 55 queue[tail].y=next.y; 56 queue[tail].pre=next.pre; 57 tail++; 58 map[next.x][next.y]='#'; 59 } 60 } 61 } 62 return -1; 63 END: 64 while(next.pre!=-1) 65 { 66 next.pre=queue[next.pre].pre; 67 step++; 68 } 69 return step; 70 } 71 72 int mleft(int x,int y,int direct) 73 { 74 int l=0; 75 while(map[x][y]!='E') 76 { 77 switch(direct) 78 { 79 case EAST: 80 if(x-1>=0&&map[x-1][y]!='#') 81 { 82 x=x-1; 83 direct=NORTH; 84 } 85 else if(y+1<w&&map[x][y+1]!='#') 86 { 87 y=y+1; 88 direct=EAST; 89 } 90 else if(x+1<h&&map[x+1][y]!='#') 91 { 92 x=x+1; 93 direct=SOUTH; 94 } 95 else if(y-1>=0&&map[x][y-1]!='#') 96 { 97 y=y-1; 98 direct=WEST; 99 } 100 l++; 101 break; 102 case SOUTH: 103 if(y+1<w&&map[x][y+1]!='#') 104 { 105 y=y+1; 106 direct=EAST; 107 } 108 else if(x+1<h&&map[x+1][y]!='#') 109 { 110 x=x+1; 111 direct=SOUTH; 112 } 113 else if(y-1>=0&&map[x][y-1]!='#') 114 { 115 y=y-1; 116 direct=WEST; 117 } 118 else if(x-1>=0&&map[x-1][y]!='#') 119 { 120 x=x-1; 121 direct=NORTH; 122 } 123 l++; 124 break; 125 126 case WEST: 127 if(x+1<h&&map[x+1][y]!='#') 128 { 129 x=x+1; 130 direct=SOUTH; 131 } 132 else if(y-1>=0&&map[x][y-1]!='#') 133 { 134 y=y-1; 135 direct=WEST; 136 } 137 else if(x-1>=0&&map[x-1][y]!='#') 138 { 139 x=x-1; 140 direct=NORTH; 141 } 142 else if(y+1<w&&map[x][y+1]!='#') 143 { 144 y=y+1; 145 direct=EAST; 146 } 147 l++; 148 break; 149 case NORTH: 150 if(y-1>=0&&map[x][y-1]!='#') 151 { 152 y=y-1; 153 direct=WEST; 154 } 155 else if(x-1>=0&&map[x-1][y]!='#') 156 { 157 x=x-1; 158 direct=NORTH; 159 } 160 else if(y+1<w&&map[x][y+1]!='#') 161 { 162 y=y+1; 163 direct=EAST; 164 } 165 else if(x+1<h&&map[x+1][y]!='#') 166 { 167 x=x+1; 168 direct=SOUTH; 169 } 170 l++; 171 break; 172 } 173 } 174 return l; 175 } 176 177 178 int mright(int x,int y,int direct) 179 { 180 int r=0; 181 while(map[x][y]!='E') 182 { 183 switch(direct) 184 { 185 case EAST: 186 if(x+1<h&&map[x+1][y]!='#') 187 { 188 x=x+1; 189 direct=SOUTH; 190 } 191 else if(y+1<w&&map[x][y+1]!='#') 192 { 193 y=y+1; 194 direct=EAST; 195 } 196 else if(x-1>=0&&map[x-1][y]!='#') 197 { 198 x=x-1; 199 direct=NORTH; 200 } 201 else if(y-1>=0&&map[x][y-1]!='#') 202 { 203 y=y-1; 204 direct=WEST; 205 } 206 r++; 207 break; 208 case NORTH: 209 if(y+1<w&&map[x][y+1]!='#') 210 { 211 y=y+1; 212 direct=EAST; 213 } 214 else if(x-1>=0&&map[x-1][y]!='#') 215 { 216 x=x-1; 217 direct=NORTH; 218 } 219 else if(y-1>=0&&map[x][y-1]!='#') 220 { 221 y=y-1; 222 direct=WEST; 223 } 224 else if(x+1<h&&map[x+1][y]!='#') 225 { 226 x=x+1; 227 direct=SOUTH; 228 } 229 r++; 230 break; 231 case WEST: 232 if(x-1>=0&&map[x-1][y]!='#') 233 { 234 x=x-1; 235 direct=NORTH; 236 } 237 else if(y-1>=0&&map[x][y-1]!='#') 238 { 239 y=y-1; 240 direct=WEST; 241 } 242 else if(x+1<h&&map[x+1][y]!='#') 243 { 244 x=x+1; 245 direct=SOUTH; 246 } 247 else if(y+1<w&&map[x][y+1]!='#') 248 { 249 y=y+1; 250 direct=EAST; 251 } 252 r++; 253 break; 254 case SOUTH: 255 if(y-1>=0&&map[x][y-1]!='#') 256 { 257 y=y-1; 258 direct=WEST; 259 } 260 else if(x+1<h&&map[x+1][y]!='#') 261 { 262 x=x+1; 263 direct=SOUTH; 264 } 265 else if(y+1<w&&map[x][y+1]!='#') 266 { 267 y=y+1; 268 direct=EAST; 269 } 270 else if(x-1>=0&&map[x-1][y]!='#') 271 { 272 x=x-1; 273 direct=NORTH; 274 } 275 r++; 276 break; 277 } 278 } 279 return r; 280 } 281 282 283 int main() 284 { 285 //freopen("data.in","r",stdin); 286 int testcase; 287 cin>>testcase; 288 while(testcase--) 289 { 290 int lv; 291 int rv; 292 int mv; 293 cin>>w>>h; 294 string str; 295 int x,y,direct; 296 for(int i=0;i<h;i++) 297 { 298 cin>>str; 299 const char *p=str.c_str(); 300 for(int j=0;j<w;j++) 301 { 302 map[i][j]=p[j]; 303 } 304 } 305 for(int i=0;i<h;i++) 306 { 307 for(int j=0;j<w;j++) 308 { 309 if(map[i][j]=='S') 310 { 311 x=i; 312 y=j; 313 map[i][j]='#'; 314 } 315 } 316 } 317 318 if(x==0) 319 direct=SOUTH; 320 else if(x==h-1) 321 direct=NORTH; 322 else if(y==0) 323 direct=EAST; 324 else if(y==w-1) 325 direct=WEST; 326 327 lv=mleft(x,y,direct)+1; 328 rv=mright(x,y,direct)+1; 329 mv=bfs(x,y)+1; 330 printf("%d %d %d\\n",lv,rv,mv); 331 } 332 }

posted on 2009-12-18 14:27 ACTime 閱讀(1402) 評(píng)論(0)  編輯 收藏 引用


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            午夜欧美不卡精品aaaaa| 亚洲免费在线| 亚洲无毛电影| 一区二区三区高清| aa级大片欧美| 午夜国产精品视频免费体验区| 亚洲影视在线播放| 亚洲女人av| 欧美在线观看www| 美腿丝袜亚洲色图| 日韩视频在线播放| 亚洲欧美在线观看| 免费中文字幕日韩欧美| 欧美日韩国产精品一卡| 国产精品视频yy9299一区| 国内精品久久久久影院 日本资源| 韩国av一区二区三区| 亚洲美女电影在线| 久久精品2019中文字幕| 亚洲激情女人| 亚洲影院在线| 欧美二区在线播放| 国产一区二区高清| 一区二区三区欧美日韩| 久久久久高清| 一区二区不卡在线视频 午夜欧美不卡'| 亚洲欧美日本在线| 欧美久久久久久久| 国产在线不卡视频| 亚洲一级电影| 欧美激情偷拍| 欧美日韩一区免费| 性刺激综合网| 欧美国产精品专区| 国产一区二区三区av电影| 最新国产成人在线观看| 欧美一级电影久久| 亚洲精品日韩在线| 久久久久久久久久久久久久一区| 国产精品成av人在线视午夜片| 在线观看一区二区精品视频| 午夜精品视频在线观看| 亚洲欧洲一区二区在线播放| 欧美一激情一区二区三区| 欧美午夜电影在线观看| 亚洲精选一区二区| 欧美高清在线一区二区| 久久国内精品视频| 国产一区二区三区成人欧美日韩在线观看 | 美女尤物久久精品| 国产视频一区三区| 午夜欧美视频| 亚洲午夜91| 欧美视频官网| 亚洲视频精品| 亚洲精品中文在线| 欧美精品久久99| 亚洲另类在线视频| 亚洲国产三级在线| 蜜臀久久99精品久久久画质超高清| 国产日韩综合一区二区性色av| 亚洲欧美变态国产另类| 99视频精品在线| 欧美无砖砖区免费| 亚洲影院在线观看| 亚洲伊人久久综合| 国产精品一区久久| 久久精品亚洲精品| 久久久精品动漫| 狠狠色伊人亚洲综合成人| 久久久7777| 久久天天躁夜夜躁狠狠躁2022| 精品不卡在线| 亚洲第一综合天堂另类专| 欧美成人亚洲成人| 亚洲一区二区三区在线| 亚洲午夜精品17c| 国产精品自在欧美一区| 久久精品国产99精品国产亚洲性色| 欧美一区二区三区在线| 在线播放日韩| 亚洲精品一区二区在线| 国产精品毛片大码女人| 久久九九国产精品| 欧美成人激情视频| 亚洲资源av| 久久精品麻豆| 99精品视频免费观看| 久久一区中文字幕| 日韩视频一区二区三区| 亚洲精品视频二区| 欧美性猛片xxxx免费看久爱| 久久精品成人一区二区三区 | 欧美/亚洲一区| 欧美日韩1区| 久久国产精品一区二区| 暖暖成人免费视频| 欧美亚洲尤物久久| 欧美成人一区二区| 欧美中文在线视频| 欧美另类亚洲| 老司机精品久久| 国产精品久久久久久久久久久久久| 久久久人成影片一区二区三区观看| 久久免费偷拍视频| 欧美在线视频导航| 欧美日韩在线视频一区| 欧美国产精品中文字幕| 国产午夜精品在线| 宅男在线国产精品| 99re66热这里只有精品4| 欧美一区二粉嫩精品国产一线天| 一本大道久久a久久精二百| 欧美自拍偷拍午夜视频| 亚洲资源在线观看| 欧美日韩国产在线观看| 欧美大片一区二区三区| 国语自产在线不卡| 欧美亚洲综合网| 欧美一区二区三区免费观看| 欧美日韩午夜在线| 亚洲精品免费在线| 亚洲国产综合在线| 久久久爽爽爽美女图片| 久久久久久久综合狠狠综合| 国产精品爽爽爽| 亚洲性人人天天夜夜摸| 亚洲欧美日韩一区二区在线| 欧美激情精品久久久久久大尺度| 蜜臀91精品一区二区三区| 韩国av一区二区| 久久精品99国产精品| 久久久久久999| 狠狠色综合网| 久久久久网址| 欧美福利一区二区| 亚洲经典三级| 欧美国产日韩在线| 亚洲精品日韩久久| 亚洲午夜免费福利视频| 国产精品www| 亚洲欧美高清| 久久精品综合一区| 亚洲电影欧美电影有声小说| 久久久之久亚州精品露出| 欧美jizzhd精品欧美喷水| 91久久精品一区二区别| 欧美精品日本| 亚洲午夜一级| 久久免费精品视频| 亚洲国产一区二区a毛片| 欧美成人亚洲| 亚洲一区二区在线视频| 久久久久久日产精品| 欧美尤物巨大精品爽| 国产日韩av高清| 久久激情中文| 欧美国产精品人人做人人爱| 亚洲伦理在线免费看| 欧美日韩国产a| 亚洲深夜av| 久久嫩草精品久久久精品一| 亚洲国产日日夜夜| 欧美视频一区二区三区四区| 午夜亚洲一区| 欧美电影在线播放| 亚洲线精品一区二区三区八戒| 国产欧美va欧美va香蕉在| 久久中文字幕一区| 亚洲图片欧洲图片av| 免费美女久久99| 亚洲一区二区黄色| 在线免费精品视频| 国产精品久久国产精麻豆99网站| 欧美主播一区二区三区| 亚洲精品欧洲| 六十路精品视频| 亚洲一区二区三区激情| 在线看国产日韩| 国产精品日日摸夜夜添夜夜av| 久久久久国色av免费观看性色| 亚洲精品一区二区三区不| 久久久久综合网| 亚洲视频日本| 亚洲国产一区二区三区青草影视 | 欧美激情精品久久久六区热门| 亚洲视频在线播放| 亚洲电影免费观看高清完整版在线| 欧美视频在线一区| 欧美成人激情在线| 久久精品综合网| 亚洲欧美精品在线| 日韩一区二区精品| 欧美华人在线视频| 久久精品最新地址| 性欧美暴力猛交69hd| 在线亚洲精品| 99成人精品| 亚洲日本欧美| 亚洲国产精品www|