解题步骤1:迷宫的读入过程
void dr(int h,int l) //读入迷宫的行列
memset(a,-1,sizeof(a));//清空数组
for(int i=1;i<=h;i++)
for(int j=1;j<l;j++)
{
cin>>ch;
if(ch=='w')
a[i][j]=0;
else
a[i][j]=-1;
} //如果输入的是w,将数组对应的值赋-1
//否则赋0
解题步骤2:迷宫问题的搜索规则
假设当前位置(i,j)
位置方向的选择 :
上(i-1,j)
下(i+1,j)
左(i,j-1)
右(i,j+1)
void dg(int i,int j)
{
a[i][j]=-1;
if(a[i-1][j]==0) dg(i-1,j);
if(a[i+1][j]==0) dg(i+1,j);
if(a[i][j-1]==0) dg(i,j-1);
if(a[i][j+1]==0) dg(i,j+1);
}
主程序(池塘问题)
int main()
cin>>n>>m;
dr(n,m)
ans=0; //ans为池塘总数
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(a[i][j]==0)
{
ans++;
dg(i,j);
}
cout<<ans<<endl;
return 0;