[kuangbin带你飞]专题一 简单搜索 K题迷宫

    xiaoxiao2021-04-18  67

    #include<iostream> using namespace std; int map[5][5]; int dx[4]={1,-1,0,0}; int dy[4]={0,0,-1,1};//dx[]和dy[]判断方向 int top=0,rail=1; struct node{ int r; int c; int pre;//父节点 }; node q[100];//构造一个node型的数组 void print(int f) { if(q[f].pre!=-1) { print(q[f].pre); cout<<"("<<q[f].r<<", "<<q[f].c<<")"<<endl; } } void bfs(int x,int y) { q[top].r=x; q[top].r=y; q[top].pre=-1; while(top<rail)//当队列不为空时 { for(int i=0;i<4;i++) { int a=q[top].r+dx[i]; int b=q[top].c+dy[i]; if(a<0||b<0||a>5||b>5||map[a][b]) continue; else {//无墙,可以访问 q[rail].r=a; q[rail].c=b; q[rail].pre=top; map[a][b]=1;//标记 rail++; } if(a==4&&b==4) {//遇见终点 print(top); } } top++; } } int main() { for(int i=0;i<5;i++) for(int j=0;j<5;j++) { cin>>map[i][j]; } cout<<"(0,"<<" 0)"<<endl; bfs(0,0); cout<<"(4,"<<" 4)"<<endl; return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-675525.html

    最新回复(0)