当前位置: 首页 > news >正文

洛谷P1256 显示图像

广搜练手题
题目链接

思路

打印每个数与其最近的 1 1 1的曼哈顿距离,显然广搜,存储每一个 1 1 1,针对每一个 1 1 1开始广搜,逐层更新,每轮后更新的为两轮之中的最小曼哈顿距离

ACcode

#include<bits/stdc++.h>using namespace std;int n, m, a[185][185];
char v[185][185];
bool f[185][185];struct node {int x, y, d;
};
queue<node>q;int xx[4] = { 0,0,1,-1 };
int yy[4] = { 1,-1,0,0 };void bfs() {node now, nex;while (!q.empty()) {now = q.front();q.pop();int x = now.x;int y = now.y;int d = now.d;a[x][y] = d;for (int i = 0;i < 4;i++) {int nx = x + xx[i];int ny = y + yy[i];if (nx >= 1 && nx <= n && ny >= 1 && ny <= m && !f[nx][ny] && v[nx][ny] == '0') {f[nx][ny] = 1;nex.x = nx;nex.y = ny;nex.d = d + 1;q.push(nex);}}}
}int main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cin >> n >> m;memset(f, 0, sizeof f);node op;for (int i = 1;i <= n;i++) {for (int j = 1;j <= m;j++) {cin >> v[i][j];if (v[i][j] == '1') {op.x = i;op.y = j;op.d = 0;q.push(op);}}}bfs();for (int i = 1;i <= n;i++) {for (int j = 1;j <= m;j++) {cout << a[i][j] << ' ';}cout << '\n';}
}
http://www.lryc.cn/news/310396.html

相关文章:

  • 模拟器抓HTTP/S的包时如何绕过单向证书校验(XP框架)
  • 【JS 算法题: 将 json 转换为字符串】
  • 数的范围 刷题笔记
  • XSS简介及xsslabs第一关
  • 构建安全的REST API:OAuth2和JWT实践
  • 从0开始学习NEON(1)
  • (二十三)Flask之高频面试点
  • 设计模式(十三)抽象工厂模式
  • HTTP Cookie 你了解多少?
  • 【QT+QGIS跨平台编译】之五十六:【QGIS_CORE跨平台编译】—【qgsmeshcalclexer.cpp生成】
  • ar时间序列
  • Android 14 AAOS audio
  • 文心一言 VS 讯飞星火 VS chatgpt (207)-- 算法导论15.4 4题
  • 【论文笔记】Attention Is All You Need
  • (亲测可用)Adobe Photoshop 2024下载与安装
  • uniapp聊天记录本地存储(详细易懂)
  • Vue.js中的$nextTick
  • python+mysql咖啡店推荐系统django+vue
  • 综合实验nginx+nfs+kpa
  • springboot197基于springboot的毕业设计系统的开发
  • group by报错
  • 3、云原生安全之falco的部署
  • Docker架构概述
  • 安装 node 错误的配置环境变量之后使用 npm 报错
  • Matlab 最小二乘插值(曲线拟合)
  • AWTK-MVVM 配置文件模型
  • 【活动】金三银四,前端工程师如何把握求职黄金期
  • 萌新学习RSA第二天(离线分解整数N)
  • STM32学习和实践笔记(1): 装好了的keil μVision 5
  • 企业计算机服务器中了360勒索病毒如何解密,360后缀勒索病毒处理流程