poj 3984 迷宫问题 dfs 求迷宫路径

题目地址:http://poj.org/problem?id=3984

利用图论中深搜的思想,存在边就是x,y ->  x+1,y  还有x,y -> x,y+1   然后仍然是访问未访问的而且不是墙壁的地方。  这样保证不走已经搜索过,走不通的路。

唯一一种需要重复访问已经访问的结点的情况是已经无路可走了,只能返回,这样就在栈中将路径取出来,把自己现在的那个先pop掉,然后实现回溯。

最后用向量实现栈的自底输出。

代码:

 ID User Problem Result Memory Time Language Code Length Submit Time
12143517 814jingqi 3984 Accepted 720K 0MS G++ 1276B 2013-09-25 17:55:15
12143515 814jingqi 3984 Accepted 184K 0MS C++ 1276B 2013-09-25 17:54:11

可以看到,同一份代码,g++和c++有时差别还是很大的


#include
#include
#include
#include
#include
using namespace std;



struct  node
{
   int a,b;

};

int maze[7][7];
bool vis[7][7];

stack  passby;

int n;
void init()
{
   memset(vis,0,sizeof(vis));

   for(int i=0;i<7;i++)
    {
       maze[i][0]=1;
       maze[0][i]=1;
       maze[6][i]=1;
       maze[i][6]=1;

    }

}



void dfs(int x,int y)
{

  //  cout<  v;
   while(passby.empty()==false)
   {
       v.push_back(passby.top());
       passby.pop();

   }

   for(int i=v.size()-1;i>=0;i--)
   {
       printf("(%d, %d)\n",v[i].a-1,v[i].b-1);

   }
}



转载于:https://www.cnblogs.com/814jingqi/p/3339246.html

你可能感兴趣的:(poj 3984 迷宫问题 dfs 求迷宫路径)