【ICPC-456】BFS和DFS的路径输出

本文探讨了DFS和BFS两种搜索算法在路径输出上的区别。DFS沿着一个方向直至找到目标,适合记录路径;BFS则通过不断扩展寻找目标,适用于求解最短步数问题。
摘要由CSDN通过智能技术生成

 

DFS 其实就是一直顺着一个方向不断的搜索直到找到了目标为止。路径输出的时候,利用记录前面的点即可。

举例:

 

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
#define N 9

int cnt;
struct Point{
   int x;
   int y;
}path[N*N];
int maze[N][N];/*保存地图*/
int vis[N][N];/*标记哪一个点是否被访问过*/
int dir[4][2] = {
  {-1,0},{0,1},{1,0},{0,-1}};/*方向数组*/
Point star , end;

/*路径输出,只要找到了目标就可以输出*/
void output(){
   printf("(%d , %d)->" , star.x , star.y);
   for(int i = 1 ; i < cnt-1 ; i++)
      printf("(%d , %d)->" , path[i].x , path[i].y);
   printf("(%d , %d)\n\n" , end.x , end.y);
   printf("\n");
}

/*深搜*/
void DFS(int x , int y , int step){
   int tmp_x , tmp_y;
   Point p;
  /*如果找到了目标,就调用output函数输出路径,然后return*/
  if(x == end.x && y == end.y){
      cnt = step;
      output();
      r
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值