The Process Of BFS.

来源:互联网 发布:为什么做seo 编辑:程序博客网 时间:2024/06/05 15:08
//This codes will show u how BFS algorithm works.<pre name="code" class="cpp">#include<iostream>#include<string>#include<list>#include<windows.h>using namespace std;char map[50][50]={"                    ","                    ","                    ","                    ","                    ","                    ","                    ","                    ","                    ","                    ",};class coordinate{public:int x,y;coordinate(int xx,int yy):x(xx),y(yy){}};void show(){int i,j;for(i=0;i<10;i++){for(j=0;j<20;j++)cout<<map[i][j];cout<<endl;}Sleep(100);//flash time if u wanne see faster ,erase it.system("cls");}int main(){list<coordinate>queue;int visited[100][100]={0},start_x,start_y,next_x,next_y,row,col,dir,direction[4][2]={{-1,0},{0,-1},{1,0},{0,1}};cout<<"Input the start coordinate which x range from 0 to 10 and y range 0 to 20(eg intput: 5 2)"<<endl;cin>>start_x>>start_y;row=10;col=20;visited[start_x][start_y]=1;map[start_x][start_y]='*';queue.push_back(coordinate(start_x,start_y));while(!queue.empty()){for(dir=0;dir<=3;dir++){next_x=queue.front().x+direction[dir][0];next_y=queue.front().y+direction[dir][1];if(next_x<0||next_y<0||next_x>=row||next_y>=col)continue;else if(visited[next_x][next_y]==0){show();map[next_x][next_y]='*';visited[next_x][next_y]=1;queue.push_back(coordinate(next_x,next_y));show();}}queue.pop_front();}return 0;}

                                             
0 0
原创粉丝点击