走迷宫(DFS)

时间:2021-11-29 14:33:15

题目:http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2449&cid=1181

目前dfs 里的递归还是不很懂,AC代码如下:

 #include<stdio.h>
#include<string.h>
int map[][],vis[][];
int ans;
int m,n;
void dfs(int i,int j)
{
if(vis[i][j]||map[i][j]) return; if(i==n&&j==m)
{
ans++;
return;
} vis[i][j]=;
dfs(i-,j); dfs(i,j-);
dfs(i+,j); dfs(i,j+); vis[i][j]=;
};
int main()
{
int t,i,j,a;
scanf("%d",&t);
while(t--)
{
ans=;
memset(vis,,sizeof(vis));
scanf("%d%d",&n,&m);
for(i=; i<=n+; i++)
for(j=; j<=m+; j++)
map[i][j]=;
for(i=; i<=n; i++)
for(j=; j<=m; j++)
{
scanf("%d",&a);
if(a==)
map[i][j]=;
}
dfs(,);
printf("%d\n",ans);
}
}