m0_66695939 2022-10-13 20:25 采纳率: 100%
浏览 35
已结题

谁能帮帮我呀,急。?

问题描述
给定一个n*m的矩阵a,矩阵中每个元素不是0就是1,且1比0少。
矩阵中两个元素a[x1][y1]和a[x2][y2]的距离d定义为:d = ︱x1 - x2︱+︱y1 - y2︱ (||表示求绝对值,)
  对于矩阵中的每一个元素,计算与它最近的值为1的元素的距离。

输入格式
第一行包括两个整数n,m(m和n在1-100之间)用空格隔开
接下来的n行中为每行的m个元素赋值为0或1

输出格式
n行,每行有m个用空格隔开的整数。第i行,第j列的整数表示a[i][j]与离它最近的值为1的元素的距离

样例输入
3 4
0 0 0 1
0 0 1 1
0 1 1 0

样例输出
3 2 1 0
2 1 0 0
1 0 0 1

我的代码(中间那步不知怎么写):

//对于每个元素,遍历整个数组,计算与元素1所在行列号的差值的绝对值之和,求得最小值
#include<bits/stdc++.h>
using namespace std;
int a[105][105],b[105][105],c[105][105],d,d[105];
int main(){
int n,m;
scanf("%d,%d",&n,&m);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
int q;
for(int i=1;i<=n;i++){
q=0;
for(int j=1;j<=m;j++){
if(a[i][j]==1){
q=a[i][j];
}
b[i][j]=q;
}
}
for(int i=1;i<=n;i++){
q=0;
for(int j=1;j<=m;j++){
if(a[i][j]==0){
问题
}
b[i][j]=d;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout<<b[i][j];
}
}
return 0;
}

  • 写回答

2条回答 默认 最新

  • SoftwareTeacher 《编程之美》作者 2022-10-13 20:45
    关注

    请你写出初始的想法

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月21日
  • 已采纳回答 10月13日
  • 创建了问题 10月13日

悬赏问题

  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源