深搜 DFS
含义
深搜是一种遍历或搜索图和树的算法。
实现方式(不撞南墙不回头)
根据题目选择一个适合的源节点,从源节点开始选择一条路一直走,直到无法前进(不满足题目条件)时,返回到上一个节点重新尝试,直到当前的节点的所有子节点都已经被访问过,再次返回到当前节点的上一节点,继续重复。
模板题 (P1605 迷宫)
最基本的DFS,通过直接搜索、判断、标记可得出答案
#include<bits/stdc++.h>
using namespace std;
int n,m,t;
int sx,sy,fx,fy,vis[10][10],ans;
int dx[4]={0,0,-1,1},dy[4]={-1,1,0,0};//四个方向
void dfs(int x,int y){
if(x==fx&&y==fy){
ans++;
return;//继续搜索其他答案
}
for(int i=0;i<4;i++){//四个方向查找可行方案
int mx=x+dx[i];
int my=y+dy[i];
if(mx>=1&&mx<=n&&my>=1&&my<=m&&vis[mx][my]!=1){//判断越界和是否走过
vis[mx][my]=1;//标记
dfs(mx,my);
vis[mx][my]=0;//回溯
}
}
}
int main(){
cin>>n>>m>>t;
cin>>sx>>sy>>fx&g
标签:剪枝,int,DFS,BFS,fx,搜索,&&,节点
From: https://blog.csdn.net/2301_79343939/article/details/142469029