定义了一个计数器da(days)用来记天数,但是发现放在哪个循环都不对。
代码如下:
#include <bits/stdc++.h>
using namespace std;
int mapk[105][105],n,m,mx,my;
int ne[8][2]={{0,1},{1,0},{0,-1},{-1,0},{1,1},{-1,-1},{-1,1},{1,-1}};
struct data{
int x;
int y;
};
int main()
{
cin>>m>>n>>mx>>my;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
char cc;
cin>>cc;
if(cc=='.') mapk[i][j]=0;
else mapk[i][j]=2;
}
}
int da=0;
int sx=n-mx+1;
int sy=my;
int head=1,tail=2;
while(head<tail)
{
struct data d[10005];
d[1].x=sx;
d[1].y=sy;
mapk[sx][sy]=1;
for(int i=head; i<tail; i++)
{
for(int k=0; k<=7; k++)
{
int x=d[i].x,y=d[i].y;
if(x+ne[k][0]<1 || x+ne[k][0]>n) continue;
if(y+ne[k][1]<1 || y+ne[k][1]>m) continue;
if(mapk[x+ne[k][0]][y+ne[k][1]]!=0) continue;
x+=ne[k][0];
y+=ne[k][1];
d[tail].x=x;
d[tail].y=y;
tail++;
mapk[x][y]=1;
}
head++;
}
}
cout<<da;
return 0;
}
感激不尽!