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

计算距离矩阵的方法_矩阵的欧式距离给定一个 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/169126.html原文链接:https://javaforall.net

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


相关推荐

  • 【VS开发】socket编程原理

    【VS开发】socket编程原理socket编程原理1、问题的引入1)普通的I/O操作过程:UNIX系统的I/O命令集,是从Maltics和早期系统中的命令演变出来的,其模式为打开一读/写一关闭(open-write-read-close)。在一个用户进程进行I/O操作时,它首先调用“打开”获得对指定文件或设备的使用权,并返回称为文件描述符的整型数,以描述用户在打开的文件或设备上

    2022年10月17日
    4
  • java是面向对象还是面向过程_Java面向对象编程和面向过程编程的区别[通俗易懂]

    java是面向对象还是面向过程_Java面向对象编程和面向过程编程的区别[通俗易懂]Java面向对象编程和面向过程编程的区别本章节目标:了解面向对象,知道类和对象的区别,会进行类的定义。知识框架:Java面向对象编程和面向过程编程的区别“面向过程”(ProcedureOriented)是一种以过程为中心的编程思想,简称OP。“面向过程”也可称之为“面向记录”编程思想,就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。所以面向过…

    2022年7月8日
    18
  • python py生成及调用pyc文件「建议收藏」

    python py生成及调用pyc文件「建议收藏」本文仅供学习交流使用,如侵立删!联系方式及demo下载见文末pythonpy文件中调用pyc文件1.生成pyc文件#目录下所有py文件生成pycimportcompileallcompileall.compile_dir(‘D:\python项目\ceshi’)#py生成pyc文件importpy_compilepy_compile.compile(‘proxy.py’)2.py文件调用pyc1.将生成的pyc文件名修改成和py文件一样(如:test_pay

    2022年6月15日
    61
  • scrapy环境配置_python的安装环境

    scrapy环境配置_python的安装环境本文仅供学习交流使用,如侵立删!联系方式及demo下载见文末PythonScrapy安装及相关配置环境win10Python:3.6.7Scrapy:2.4.1Python安装Scrapy安装pipinstallscrapy解决Command“pythonsetup.pyegg_info”failedwitherrorcode1问题更新pippipinstall–upgradepip问题:权限不足解决:pip

    2022年9月18日
    2
  • GiD学习笔记「建议收藏」

    GiD学习笔记「建议收藏」GiD软件初步使用时,与一般传统的三维软件,思维方式很难一下子转变过来。它的最基本结构是几何结构,创建模型从点到线,线到面,面到体的顺序。网格面与几何体有截然不同的意义,所以在使用初期,需要先搞清楚一些基本概念。

    2025年6月8日
    2
  • docker创建的mysql连接不上_docker运行mysql

    docker创建的mysql连接不上_docker运行mysqldocker安装mysql【获取容器】dockerpullmysql:5.6【启动容器】dockerrun-p3306:3306–namemymysql-v$PWD/conf:/etc/mysql/conf.d-v$PWD/logs:/logs-v$PWD/data:/var/lib/mysql-eMYSQL_ROOT_PASSWORD=123456-dmys…

    2022年9月27日
    2

发表回复

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

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