热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

poj3984(广搜走迷宫输出路径)

#include<iostream>#include<queue>#include<cstdio>usingnamespacestd;
#include 
#include 
#include 
using namespace std;

int main()
{
    int A[7][7];
    int u;
    int fa[7][7]={{0}};
    int record[7][7]={{0}};
    queue q;
    int i,j;

    for (i=0;i<=4;i++)
    	for (j=0;j<=4;j++)
    	    cin >> A[i][j];
    u=0;
    q.push(u);
    record[0][0]=1;
    while (q.front()!=24 && !q.empty())
    {
      int x=q.front()/5;
      int y=q.front()%5;

      if (!record[x+1][y] && x+1<=4 && A[x+1][y]!=1)
      {
    	  u=(x+1)*5+y;
    	  fa[x+1][y]=q.front();
    	  q.push(u);
    	  record[x+1][y]=1;
      }

      if (!record[x-1][y] && x-1>=0 && A[x-1][y]!=1)
      {
    	  u=(x-1)*5+y;
    	  fa[x-1][y]=q.front();
    	  q.push(u);
    	  record[x-1][y]=1;
      }

      if (!record[x][y+1] && y+1<=4 && A[x][y+1]!=1)
      {
    	  u=x*5+y+1;
    	  fa[x][y+1]=q.front();
    	  q.push(u);
    	  record[x][y+1]=1;
      }

      if (!record[x][y-1] && y-1>=0 && A[x][y-1]!=1)
      {
    	  u=x*5+y-1;
    	  fa[x][y-1]=q.front();
    	  q.push(u);
    	  record[x][y-1]=1;
      }

      q.pop();
    }

    int x=4;
    int y=4;
    int path[100];
    int counter=0;
    while (1)
    {
    	path[counter++]=x*5+y;
    	int tempx=x,tempy=y;
    	if (fa[x][y]==0)
    		break;
    	x=fa[tempx][tempy]/5;
    	y=fa[tempx][tempy]%5;
    }

    printf("(0, 0)\n");
    for (i=counter-1;i>=0;i--)
    {
        printf("(%d, %d)\n",path[i]/5,path[i]%5);
    }
    return 0;
}


推荐阅读
author-avatar
小白石
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有