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();
}
}