|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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++了吗 |
|