不知道怎么做(っ °Д °)
题目描述:猪猪学校的草坪是长方形的,地上有的格子铺着草,有些格子则是小花。佩奇站在其中一格草地上,他只能向相邻的铺着草的格子移动,不能走到有小花的格子上。
请编写一个程序,计算佩奇能够到达的格子的数量。
输入格式:共 k+1行,
第一行是两个整数 n 和 k ,分别表示草地的宽度和高度。
在接下来的 k 行中,每行包括 n 个字符。每个字符表示当前格子的植物,规则如下
1).:草地格子;
2)#:鲜花格子;
3)@:草地格子,并且佩奇一开始站在这个格子上,全图只有一个。
输出格式:一个整数,表示佩奇能到达的格子数量(包括一开始的那格)。
样例:(输入)
6 9
....#.
.....#
......
......
......
......
......
#@...#
.#..#.
输出:
45
数据范围:
对于 100% 的数据有1≤n,k≤20 。
稍微改了一点
#include<bits/stdc++.h>
using namespace std;
bool a[110][110];
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
struct pa
{
int nowx,nowy;
}q[256];
int main()
{
int n,m;
cin>>n>>m;
char c;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>c;
if(c=='.') a[i][j]=1;
else if(c=='#') a[i][j]=0;
else
{
a[i][j]=0;
q[1].nowx=i;
q[1].nowy=j;
}
}
}
int f=1,r=1;
int s=0;
while(f<=r)
{
a[q[f].nowx][q[f].nowy]=0;
for(int i=0;i<4;i++)
{
int xx=q[f].nowx+dx[i];
int yy=q[f].nowy+dy[i];
if(xx>0&&yy>0&&a[xx][yy]!=0&&xx<=n&&yy<=m)
{
r++;
q[r].nowx=xx;
q[r].nowy=yy;
a[xx][yy]=0;
cout<<q[r].nowx<<" "<<q[r].nowy<<endl;
s++;
}
}
f++;
}
cout<<s+1;
return 0;
}
我试试