#include <stdio.h> #include <string.h> char map[25][25]; int ans,n,m; bool visited[25][25]; void search (int row,int col){ if (row<0 || row>=n || col<0 || col>=m || map[row][col]=='#' || visited[row][col]) //如果点不在格子里 || 不能通行 || 已经经历过 就回溯; return; ++ans; //累加 经历的格子数目 visited[row][col] = true; //设置访问标志 search (row+1,col); //递归与[row , col]相邻的四个点。 search (row-1,col); search (row,col-1); search (row,col+1); } int main (){ int row,col; while (~scanf ("%d%d",&m,&n) && n && m){ while (getchar ()!='\n') continue; for (int i=0;i<n;i++){ for (int j=0;j<m;j++){ scanf ("%c",&map[i][j]); if (map[i][j]=='@') { row=i,col=j; //记录人的位置 } } getchar (); } ans = 0; memset (visited,false,sizeof (visited)); search (row,col); printf ("%d\n",ans); } return 0; }
POJ 1979(递归)
最新推荐文章于 2022-01-14 10:53:09 发布