马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <bits/stdc++.h>
using namespace std;
// #define x first;
// #define y second;
const int N=1005;
char g[N][N];
int st[N][N];
typedef pair<int,int> p;
// 人所能到的地方,火焰一定可以到,用的bfs,还需要学一下
int dx[]={0,-1,0,1},dy[]={-1,0,1,0}; //上左下右
int main()
{
int n,m,x,y;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>g[i][j]; //a[i][j]=getchar();
}
//getchar() 也可以这么去读
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(g[i][j]='@')
{
x=i,y=j;
}
}
}
int ans=0;
queue<p> q;
q.push({x,y});
st[x][y]=1;
while(q.size())
{
auto u=q.front();
q.pop();
x=u.first,y=u.second;
for(int i=0;i<4;i++)
{
int a=x+dx[i],b=dy[i]+y;
if(a<=n&&a>=1&&b<=n&&b>=1&&g[a][b]!='#'&&!st[a][b])
{
if(g[a][b]=='!')ans++;
st[a][b]=1;
q.push({a,b});
}
}
}
cout<<ans<<endl;
// 使用bfs,宽搜,感觉一般用队列去写
}
为什么输出的还是0,不知道哪里错了,不是以及ans++了吗 |