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

计算距离矩阵的方法_矩阵的欧式距离给定一个 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;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/168643.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • SVN安装与使用_刚安装ETC不能马上使用吗

    SVN安装与使用_刚安装ETC不能马上使用吗SVN(Subversion)是近年来崛起的版本管理工具,在当前的开源项目里(J2EE),几乎95%以上的项目都用到了SVN。Subversion项目的初衷是为了替换当年开源社区最为流行的版本控制软件CVS,在CVS的功能的基础上有很多的提升同时也能较好的解决CVS系统的一些不足。svn是基于客户/服务器模式,所以分客户端和服务器端,作为开发人员,自己的电脑上只需要安装客户端,又…

  • ASP.NET_SessionId 何时生成?何时失效?有何作用呢?

    ASP.NET_SessionId 何时生成?何时失效?有何作用呢?相信做asp.netweb开发的码友们,对ASP.NET_SessionId一定不陌生。ASP.NET_SessionId保存在浏览器cookie中。那么它是来源于哪里?何时生成?何时失效?有何作用呢?带着这些疑问,我们开始探寻它。废话不多说,实践才是检验真理的最好方法,直接上代码。打开VS建立一个APS.NETMVC程序,在HOME页面添加如下代码:clearSession和clearSessionId这两个是ajax方式请求过去的,不会刷新页面,对应的后台方法如下:对应的action代

  • call undefined function openssl_cipher_iv_length

    call undefined function openssl_cipher_iv_length

    2021年10月20日
  • rime android汉字,Rime输入法

    rime android汉字,Rime输入法Rime输入法的安卓版又叫同文输入法,是Rime输入法好几个版本中的一个,适合喜欢调校的人。界面比较简洁,也很小巧,功能就是输入,偏英文输入,支持调整颜色更改外观。Rime输入法简介RIME/中州韻輸入法引擎,是一個跨平臺的輸入法算法框架。基於這一框架,Rime開發者與其他開源社區的參與者在Windows、MacOSX、Linux、Android平臺上創造了不同的輸入法前端實現。Rime…

  • sql嵌套查询例子_sql的多表数据嵌套查询

    sql嵌套查询例子_sql的多表数据嵌套查询SQL嵌套查询示例现需要查询学生上课人数超过“EasternHeretic”的任意一门课的学生人数的课程信息,请使用ANY操作符实现多行子查询。(Lintcode刷题记录)

发表回复

您的电子邮箱地址不会被公开。

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