今天都没有ppt,这就很考验我的总结技术
个人认为搜索是一种更高级的递归(还是废话)
算了说不清楚直接放例题了
例题:HLOJP266迷宫
解题思路:本来想用数学方法来做(递推),数据也非常小能做,但老师要求用搜索,搜索的话只要用一个数组标记,如果未走过就走到那继续dfs就可以,不过有上下左右四个方向条件要控制好
神秘代码:
#include<bits/stdc++.h>
using namespace std;
int n,m,t,xx1,yy1,xx2,yy2,xx3,yy3,a[6][6],sum;
void dfs(int x,int y)
{
if(x==xx2&&y==yy2)
{
sum++;
return;
}
else
{
a[x][y]=1;
if(!a[x-1][y]&&x>1) dfs(x-1,y);
if(!a[x+1][y]&&x<n) dfs(x+1,y);
if(!a[x][y-1]&&y>1) dfs(x,y-1);
if(!a[x][y+1]&&y<m) dfs(x,y+1);
a[x][y]=0;
}
}
int main()
{
cin>>n>>m>>t;
cin>>xx1>>yy1>>xx2>>yy2;
while(t--)
{
cin>>xx3>>yy3;
a[xx3][yy3]=1;
}
dfs(xx1,yy1);
cout<<sum<<endl;
return 0;
}