DFS
void (int x)
{
if(x...符合某种条件||不能继续搜索)
{
操作...
return;
}
else
{
for(...)
{
if(!v[i] && ...)
{
v[i] = 1;
cnt++;
...
dfs(下一层);
v[i] = 0;
cnt--;
}
}
}
}
BFS
以二维举例
int v[N][N];
int dir[4][2]={};
struct node
{
int x,y,num;
}
queue<node>q;
void bfs()
{
// 初始化
s.x=s.y=1;
s.num=0;
q.push(s);
queue t,tt;
t = q.front();
q.pop();
while(!q.empty)
{
for(int i=0;i<4;i++)
{
int xx = t.x;
int yy = t.y;
if(xx>0&&yy>0&&xx<N&&yy<N)
{
if(v[xx][yy]==-1)
{
v[xx][yy] = t.num+1;
tt.x=xx;
tt.y=yy;
tt.num = v[xx][yy];
u.push(tt);
if(v[x1][y1]>0 && v[x2][y2]>0)
{
cout<<v[x1][y1]<<endl;
cout<<v[x2][y2]<<endl;
return ;
}
}
}
}
}
}