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

计算距离矩阵的方法_距离矩阵计算给定一个 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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • nvidia显示设置不可用_纯干货!手把手教你为FreeSync显示器开启G-Sync教程

    nvidia显示设置不可用_纯干货!手把手教你为FreeSync显示器开启G-Sync教程就在刚刚过去的CES2019年上,英伟达为我们带来了G-SyncCompatible,兼容VESAAdaptive-Sync和AMDFreesync显示器,不久前最新的驱动也已经发布,现在就可以为你的显示器开启G-SyncCompatible了。众所周知,NVIDIA的游戏显卡备受玩家推崇,在此之前,G-SYNC技术只能针对G-SYNC显示器进行搭配。兼容技术的到来,意味着使用NVIDI…

    2022年5月2日
    138
  • 部署Vista – 第7部分:创建一个最小化的应答文件

    部署Vista – 第7部分:创建一个最小化的应答文件

    2021年8月2日
    52
  • s一般怎么称呼自己的m_上海平面设计工资一般是多少,我该怎么提升自己的平面设计能力?…

    s一般怎么称呼自己的m_上海平面设计工资一般是多少,我该怎么提升自己的平面设计能力?…上海平面设计工资一般是多少,我该怎么提升自己的平面设计能力,学平面设计能干什么?很多人以为学习平面设计专业的话,毕了业只是做海报、设计广告而已。后来才发现,平面设计专业,其实有很多有意义的行业。就在上海平面设计工资一般是多少,我该怎么提升自己的平面设计能力来分享下自己的经验。平面设计是任何企业和公司都不可缺少的岗位之一,位置至关重要。而且大街上随处可见平面设计的踪影,海报、产品包装、路标指示牌、l…

    2022年6月23日
    47
  • css字体发光样式_php语言入门

    css字体发光样式_php语言入门本文给大家介绍CSS3如何实现字体发光效果(代码实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。text-shadow该属性为文本添加阴影效果text-shadow:h-shadowv-shadowblurcolor;h-shadow:水平阴影的位置(阴影水平偏移量),可为负值,必需v-shadow:垂直阴影的位置(阴影垂直偏移量),可为负值,必需blur:阴…

    2022年10月17日
    7
  • vim 搜索字符串_python查找字符串位置

    vim 搜索字符串_python查找字符串位置搜索(查找)#搜索模式/ #前向搜索匹配? #反向搜索匹配#移动定位n #跳到下一个匹配的位置N #跳到上一个匹配的位置* #对光标当前所在的完整单词进行前向搜索匹配# #对光标当前所在的完整单词进行后向搜索匹配g*#前向搜索光标当前所在单词g##反向搜索光标当前所在单词搜索时字母大小写情况设置#设置vimrc文件#当输入的搜索词全部是小写时,忽略大小写;搜索词至少有一个大写字母时,进行大小写匹配搜索setignorecase

    2022年9月23日
    6
  • 完整的蓝屏错误代码大全详解[通俗易懂]

    完整的蓝屏错误代码大全详解[通俗易懂]完整的BSOD错误代码列表从STOP0x1到STOP0xC0000221一个死机(BSOD)的蓝屏,技术上称为一个STOP错误,若在Windows遭受了严重的错误,被迫“停”的问题。在任何Windows操作系统中都会出现BSOD错误,包括Windows10,Windows8,Windows7,WindowsVista,WindowsXP甚至Windows98/95。由于蓝屏错误让…

    2022年5月15日
    45

发表回复

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

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