acgo题库
  • 首页
  • 题库
  • 学习
  • 天梯
  • 备赛

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
  • 竞赛
  • 讨论
  • 团队
登录
注册
题目详情提交记录(0)
  • 题解

    #include <bits/stdc++.h> using namespace std; int n,m,e; struct node{ int x,y; int step; }; int maps[1001][1001]; int vis[1001][1001]; bool check(int x,int y){ if (x>n || x<1 || y>m || y<1){ return false; } return true; } int d[4][2]={{1,0},{0,1},{-1,0},{0,-1}}; void bfs(int x,int y){ queue<node> q; q.push({x,y,0}); while(q.size()){ node now=q.front(); q.pop(); for (int i=0;i<4;i++){ int nx,ny; nx=d[i][0]+now.x; ny=d[i][1]+now.y; if (check(nx,ny) && maps[nx][ny]1 && now.step<e && !vis[nx][ny]){ vis[nx][ny]=1; q.push({nx,ny,now.step+1}); } } } } int main(){ cin>>n>>m>>e; for (int i=1;i<=n;i++){ for (int j=1;j<=m;j++){ char c; cin>>c; if (c'.'){ maps[i][j]=1; }else if(c=='#'){ maps[i][j]=0; }else if(c=='H'){ maps[i][j]=2; } } } int num=0; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(maps[i][j]==2){ bfs(i,j); } } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(vis[i][j] || maps[i][j]==2){ num++; } } } cout<<num; return 0; }

    userId_undefined

    Allen

    倔强青铜时间刺客空间掌握者时空双修者循环·循环打卡人分支·分支解题者
    4阅读
    0回复
    0点赞
暂无数据

提交答案之后,这里将显示提交结果~

首页