BFS/BFS模板

 

DFS:

#include<bits/stdc++.h>   
using namespace std;   
#define max 100  
bool vis[max][max];   
int mp[max][max];   
int dir[4][2]={-1,0,0,1,1,0,0,-1};   
void dfs(int x,int y) {   
    vis[x][y]=1;   
    if(mp[x][y]==G) {  
     ...... return;   
     }   
     for(int i=0;i<4;i++) {   
        if())   
        dfs(x+dir[i][0],y+dir[i][1]);   
                vis[][]=0;   
    }  
     return;  
}   
int main() { ......   
     if( )  
    dfs();  
    vis[][]=0; return 0;      
}  
BFS:
#include<bits/stdc++.h>   
using namespace std;   
#definemaxn 100   
bool vis[max][max];   
int dir[4][2]={-1,0,0,1,1,0,0,-1}; //(具体情况设置)   
struct state{   
    int x,y;   
    int step;   
}a;   
queue<State>q;   
bool check(state s){   
    if(...) return 1;   
    else return 0;   
}   
void bfs(state st){  
    state now,next;   
     st.step=0;   
     q.push(st);   
     vis[st.x][st.y]=1;   
    while(!q.empty()){   
    now=q.front();   
    if(now==最终状态){  
     ...... return; }  
      for(int i=0;i<4;i++){  
        next.x=now.x+dir[i][0];   
        next.y=now.y+dir[i][1];   
        next.stepr=now.step+1;   
        if(check(next)){   
        q.push(next);   
        vis[next.x][next.y]=1;   
        }   
      }   
    q.pop();   
    }   
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值