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

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

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

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

(0)


相关推荐

  • IDEA 如何进行全局搜索

    IDEA 如何进行全局搜索毕业季来临,很多小伙伴在忙于考公或者准备研究生复试等工作,因此从网上下载或者购买了源码。源码在本地运行成功之后,想要稍微修改一下,结果发现无从下手。本文就向大家介绍一个程序员在开发中最常见最常用的功能:全局搜索。全局搜索:不管是你用任何的开发语言Java/C#/Python等,或者用任何的开发工具IDEA/Eclipse/MyEclipse等。全局搜索都是快速定位代码的一种快捷方式。废话不多说,直接上…

  • IIS、nginx、apache只允许域名访问配置

    IIS、nginx、apache只允许域名访问配置

  • python怎么用反三角函数_反三角函数怎么用

    展开全部已知:cosα32313133353236313431303231363533e4b893e5b19e31333366303132=3/5,求α。解:已知:cosα=3/5有:α=arccos(3/5)经查表(或按计算器),得:α≈53.13010235°,或:α≈323.13010235°考虑到三角函数的周期性,得:α≈360°×k+53.13010235°,或:α≈360°×k+323…

  • BM3D算法学习

    BM3D算法学习来源:BM3D算法学习-知乎(zhihu.com)作者:爱酷的胡巴前些日子在学习图像降噪的算法,自然而然的发现了这篇里程碑式的作品,“BM3D”3D块匹配降噪算法,想来时间也久,赶紧再写下来,以免过后忘记。在学习的过程中,由于没学过数字图像处理,学起来还是挺墨迹的,前前后后得有四五天吧,才算整个大差不差,期间看了许多前辈的博客和代码,也总算有些许的进步和理解,特此感…

  • kubeadm 查看创建集群需要的镜像版本,附拉取镜像脚本

    kubeadm 查看创建集群需要的镜像版本,附拉取镜像脚本

  • recvfrom设置超时

    recvfrom设置超时structtimevaltv;intret;tv.tv_sec=10;tv.tv_usec=0;if(setsockopt(s,SOL_SOCKET,SO_RCVTIMEO,&tv,sizeof(tv))<0){ printf("socketoptionSO_RCVTIMEOnotsupport\n"); return;}if((ret

发表回复

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

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