题目
输入
3 2 2 0 1 0 0 2 2 0 1 1 0 2 3 0 0 0 0 0 0
结果
1
0
4
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define maxn 10
int map[maxn][maxn],vis[maxn][maxn],n,m,k;
void BFS(int u,int v)
{
int x,y;
int a[]= {0,0,-1,1},b[]= {-1,1,0,0};
for(int i=0; i<4; i++)
{
x=u+a[i];
y=v+b[i];
if(x==n && y==m)
k++;
else if(x<=n && x>0 && y<=m && y>0)
{
if(!map[x][y] && !vis[x][y])
{
vis[x][y]=1;
BFS(x,y);
}
}
}
vis[u][v]=0;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
k=0;
memset(map,0,sizeof(map));
memset(vis,0,sizeof(vis));
scanf("%d%d",&n,&m);
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
scanf("%d",&map[i][j]);
vis[1][1]=1;
BFS(1,1);
printf("%d\n",k);
}
return 0;
}