1 #include<stdio.h> 2 #include<string.h> 3 4 int map[10][10],sum,n,m,vis[10][10]; 5 6 void seek(int mbn,int mbm) 7 { 8 int jn[] = {0,0,-1,1}; 9 int jm[] = {-1,1,0,0}; 10 int i,tn,tm; 11 for(i = 0;i < 4; i++) 12 { 13 tn = mbn+jn[i]; 14 tm = mbm+jm[i]; 15 if(tn == n && tm == m) sum++; 16 else if(tn >= 1 && tn <= n && tm >= 1 && tm <= m) 17 { 18 if(map[tn][tm] != -1 && !vis[tn][tm]) 19 { 20 vis[tn][tm] = 1; //标记此条路中已走过的 21 seek(tn,tm); 22 } 23 } 24 } 25 vis[mbn][mbm] = 0; //去掉标记 26 } 27 28 int main() 29 { 30 int js,i,j; 31 scanf("%d",&js); 32 while(js--) 33 { 34 scanf("%d %d",&n,&m); 35 memset(map,-1,sizeof(map)); 36 memset(vis, 0,sizeof(vis)); 37 for(i = 1;i <= n; i++) 38 for(j = 1;j <= m; j++) 39 { 40 scanf("%d",&map[i][j]); 41 if(map[i][j]) map[i][j] = -1; 42 } 43 sum = 0; 44 vis[1][1] = 1; 45 seek(1,1); 46 printf("%d\n",sum); 47 } 48 return 0; 49 }