poj1573解題報告

來源:互聯網
上載者:User

題目大意:給定一個由SNWE幾個字母組成的地圖,這四個字母代表著四個方向,給定起點,讓你判斷是否能走出這個地圖,或走到某步的時候形成一個環。。。

Sample Input

3 6 5NEESWEWWWESSSNWWWW4 5 1SESWEEESNWNWEENEWSEN0 0 0

Sample Output

10 step(s) to exit3 step(s) before a loop of 8 step(s)

 

 

思路:這個題還是走迷宮的變形,先將step入隊,然後將這個人走過每個點的座標依次入隊,如果發現其座標在地圖外則說明能走出地圖,如果當前的點和以前走過的某點座標一致則說明能形成環。。。

 

 

 

#include<iostream><br />using namespace std;</p><p>int queue[100000],head,rear,m,n,flag;char map[20][20];<br />int pop(){return queue[head++%100000];}<br />void push(int i){queue[rear++%100000]=i;}<br />int bfs()<br />{<br />int step,i,path[110][2];<br />while(head!=rear)<br />{<br />step=pop();<br />for(i=0;i<=step;i++)<br />{path[i][0]=pop();path[i][1]=pop();}<br />if(path[step][0]<0||path[step][0]>=m||path[step][1]<0||path[step][1]>=n)<br />return step;<br />for(i=0;i<=step;i++)<br />if(i<step&&path[step][0]==path[i][0]&&path[step][1]==path[i][1])<br />{<br />flag=i;<br />return step-i;<br />}<br />push(step+1);<br />for(i=0;i<=step;i++)<br />{push(path[i][0]);push(path[i][1]);}<br />if(map[path[step][0]][path[step][1]]=='N')<br />{push(path[step][0]-1);push(path[step][1]);}<br />if(map[path[step][0]][path[step][1]]=='S')<br />{push(path[step][0]+1);push(path[step][1]);}<br />if(map[path[step][0]][path[step][1]]=='E')<br />{push(path[step][0]);push(path[step][1]+1);}<br />if(map[path[step][0]][path[step][1]]=='W')<br />{push(path[step][0]);push(path[step][1]-1);}</p><p>}</p><p>}<br />int main()<br />{<br />int i,j,start,o;<br />while(cin>>m>>n>>start&&m)<br />{<br />head=rear;<br />flag=-1;<br />for(i=0;i<m;i++)<br />for(j=0;j<n;j++)<br />cin>>map[i][j];<br />push(0);push(0);push(start-1);<br />o=bfs();<br />if(flag==-1)<br />cout<<o<<" step(s) to exit"<<endl;<br />else<br />cout<<flag<<" step(s) before a loop of "<<o<<" step(s)"<<endl;</p><p>}<br />return 0;<br />}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.