计算距离矩阵的方法_距离矩阵计算

计算距离矩阵的方法_距离矩阵计算给定一个 N 行 M 列的 01 矩阵 A,A[i][j] 与 A[k][l] 之间的曼哈顿距离定义为:dist(A[i][j],A[k][l])=|i−k|+|j−l|输出一个 N 行 M 列的整数矩阵 B,其中:B[i][j]=min1≤x≤N,1≤y≤M,A[x][y]=1dist(A[i][j],A[x][y])输入格式第一行两个整数 N,M。接下来一个 N 行 M 列的 01 矩阵,数字之间没有空格。输出格式一个 N 行 M 列的矩阵 B,相邻两个整数之间用一个空格隔开。数据范围

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

给定一个 N 行 M 列的 01 矩阵 A,A[i][j] 与 A[k][l] 之间的曼哈顿距离定义为:

dist(A[i][j],A[k][l])=|i−k|+|j−l|
输出一个 N 行 M 列的整数矩阵 B,其中:

B[i][j]=min1≤x≤N,1≤y≤M,A[x][y]=1dist(A[i][j],A[x][y])
输入格式
第一行两个整数 N,M。

接下来一个 N 行 M 列的 01 矩阵,数字之间没有空格。

输出格式
一个 N 行 M 列的矩阵 B,相邻两个整数之间用一个空格隔开。

数据范围
1≤N,M≤1000

输入样例:
3 4
0001
0011
0110
输出样例:
3 2 1 0
2 1 0 0
1 0 0 1
#include<bits/stdc++.h>
#define x first
#define y second
using namespace std;
const int N = 1e3 + 10;
typedef pair<int,int>PII;
int g[N][N],vis[N][N],dist[N][N];
struct Node{ 
   
    int x,y;
    int d;
}node[N];
queue<PII>q;
int n,m;
void bfs(){ 
   
    for(int i = 0;i < n;i ++){ 
   
        for(int j = 0;j < m;j ++){ 
   
            if(g[i][j] == 1){ 
   
                vis[i][j] = true;
                dist[i][j] = 0;
                q.push({ 
   i,j});
            }
        }
    }
    int dx[4] = { 
   0,1,0,-1},dy[4] = { 
   -1,0,1,0};
    while(!q.empty()){ 
   
        PII t = q.front();
        q.pop();
        for(int k = 0;k < 4;k ++){ 
   
            int a = t.x + dx[k],b = t.y + dy[k];
            if(a < 0 || a >= n || b < 0 || b >= m || vis[a][b])continue;
            vis[a][b] = true;
            dist[a][b] = dist[t.x][t.y] + 1;
            q.push({ 
   a,b});
        }
    }
    for(int i = 0;i < n;i ++){ 
   
        cout<<dist[i][0];
        for(int j = 1;j < m;j ++){ 
   
            cout<<" "<<dist[i][j];
        }
        cout<<endl;
    }
}
int main(){ 
   
    cin>>n>>m;
    char x;
    for(int i = 0;i < n;i ++){ 
   
        for(int j = 0;j < m;j ++)cin>>x,g[i][j] = x - '0';
    }
    bfs();
    return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168832.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 锁相环pll原理_整流电路软启动simulink

    锁相环pll原理_整流电路软启动simulink带能量回馈的单相整流器,能够完成单位功率因数整流,控制母线电压,逆变并网等功能。实现能量的双向流动,具备四象限电源功能。在单相整流器中,电网电压的锁相是最基本最重要的技术点之一,相位之余整流器,就像空气之于人类。本次记录一下基于二阶广义积分器虚拟两相的单相软件锁相环的simulink仿真。仿真搭建如图1所示。…

    2022年9月20日
    3
  • push master was rejected by remote(airpush)

    idea中,发布项目到OSChina的Git中,当时按照这样的流程添加Git,然后push,提示:pushtoorigin/masterwarrejected”。大概原因是:初始化项目时,远程仓库我建了README.md文件,而本地仓库与远程仓库尚未进行文件关联,因此需要将两个仓库的文件进行关联后提交。解决方案如下:1.切换到自己项目所在的目录,右键选择GITB…

    2022年4月13日
    209
  • vmware15激活密钥最新【2021免费激活】

    (vmware15激活密钥最新)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html4M7HSKPBXS-eyJsaWNlbnNlSWQi…

    2022年3月29日
    122
  • fiddler抓包指南(浏览器、app抓包及证书安装)「建议收藏」

    fiddler抓包指南(浏览器、app抓包及证书安装)「建议收藏」1、fiddler对浏览器抓包1.1对浏览器的http的抓包Capturing开启,进行抓包;Capturing关闭,停止抓包;如下图:1.2对浏览器的https抓包1.2.1开启fiddler的https选项配置路径:Tools->FiddlerOptions->HTTPS->三个选项全部勾选如下图所示:1.2.2fiddler导出ca证书操作路径:

    2022年5月7日
    115
  • VMware下安装centos7.8及相关配置

    VMware下安装centos7.8及相关配置第一步:下载centos7.8下载地址:http://mirrors.aliyun.com/centos/7.8.2003/isos/x86_64/版本选择(此处我选择DVD版):CentOS-7-x86_64-DVD-1810.iso标准安装版,一般下载这个就可以了(推荐)CentOS-7-x86_64-NetInstall-1810.iso网络安装镜像CentOS-7-x86_64-Everything-1810.iso对完整版安装盘的软件进行补充,集成所有软件CentO.

    2022年5月30日
    29
  • 【Android动画】之Tween动画 (渐变、缩放、位移、旋转)

    【Android动画】之Tween动画 (渐变、缩放、位移、旋转)

    2021年12月8日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号