/*
5 6 3
******
*..*.*
******
*....*
******
*/
#include<bits/stdc++.h>
using namespace std;
int ts=0;
int a[1001][1001];
char c;
int ans;
typedef pair<int,int> pairs;
queue<pairs> save;
int solve()
{
int dire[][2]={1,0,-1,0,0,1,0,-1};
while(save.size())
{
int x=save.front().first,y=save.front().second;
save.pop();
for(int i=0;i<=3;i++)
{
int kx=x+dire[i][0],ky=dire[i][1];
//printf("new %d %d\n",kx,ky);
if(a[kx][ky]==1) ans++,a[kx][ky]=2;
else if(a[kx][ky]==0)
{
pairs news=make_pair(kx,ky);
save.push(news);
}
}
}
}
int main()
{
int n,m,t;
scanf("%d%d%d",&n,&m,&t);
getchar();
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
scanf("%c",&c);
if(c=='*') a[i][j]=1;
else a[i][j]=0;
}
getchar();
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
while(t--)
{
int x,y;scanf("%d%d",&x,&y);
pairs k=make_pair(x,y);
while(save.size()) save.pop();
save.push(k);
solve();
printf("ans=%d\n",ans);
}
}
为什么死循环?(单从结构看)
最新推荐文章于 2022-04-28 18:00:00 发布