1751 - 快乐的马里奥

马里奥是一个快乐的油漆工人,这天他接到了一个油漆任务,要求马里奥把一个 nn 行 mm 列的矩阵每一格都用油漆标记一个数字,标记的顺序按照广度优先搜索的方式进行,也就是他会按照如下方式标记:

1、首先标记第 11 行第 11 列的单元格,标记数字为 11 ;

2、然后标记当前单元格上下左右四个方向所有能标记的单元格,且:

① 标记顺序按照:右、下、左、上的优先级;

② 不能标记到矩阵外,且标记过的数字不能重复标记;

3、当本单元格标记结束,寻找比本单元格中数字大 11 的单元格,标记那个单元格的上下左右四个方向,也是按照步骤 22 所示的要求进行标记。

依次类推,直到所有单元格都被标记。

比如:如果有一个 3×33×3 的矩阵如下,那么首先标记 1,11,1 单元格,并按照上面步骤 22 的要求标记其四周能够标记的单元格,标记结果如下:

接下来,标记比 1,11,1 格大 11 的数字的四周的单元格,也就是标记值为 22 的单元格四周的单元格,标记结果如下:

接下来标记值为 33 的单元格四周的单元格,标记结果如下:

接下来标记值为 44 的单元格四周的单元格,标记结果如下:

接下来标记值为 55 的单元格四周的单元格,标记结果如下:

接下来标记值为 66 的单元格四周的单元格,但这个数字四周的单元格已经被标记,因此继续标记值为 77 四周的单元格,标记结果如下:

此时,发现标记结束,得到如上图所示的标记结果。

输入

两个整数 nn 和 mm (2<n,m≤1002<n,m≤100)。

输出

输出 nn 行 mm 列的标记后的矩阵,输出每个数后空一格。

样例

输入

复制

3 3

输出

复制

1 2 4
3 5 7
6 8 9
#include<bits/stdc++.h>
using namespace std;
//a:存储矩阵,q:存储队列(遍历过的点) 
int a[110][110],q[10100][3];//0那列不要,从1那列开始 //探测每个点的四个方向
int fx[5]={0,0,1,0,-1};
int fy[5]={0,1,0,-1,0};
int tx,ty;//表示尝试访问的点
int k=1;//每个点标记的值,每标记一次,自增1
int n,m,i,j;
//head:头指针,指向头的位置,tail:尾指针,指向尾的位置
//有效的数据在head和tail之间。head先不动,tail往下动,当这个head里的搜完了,head再往下动
int head=1,tail=1;int main()
{cin>>n>>m;a[1][1]=k;//起点k++;//1,1点存入队列,先以1,1点为head,访问其四个方向q[1][1]=1;q[1][2]=1;while(head<=tail)//当head>tail时,说明全部搜完了{for(i=1;i<=4;i++)//周围四个方向 {//从head对应的点开始,加上方向值的变化,得到四个新点tx=q[head][1]+fx[i];ty=q[head][2]+fy[i];if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&a[tx][ty]==0){//将新点存入队列 tail++;q[tail][1]=tx;q[tail][2]=ty;a[tx][ty]=k;k++;}} head++; } for(i=1;i<=n;i++){for(j=1;j<=m;j++){cout<<a[i][j]<<" ";}cout<<endl;} return 0;} 

下面是stl的

#include<bits/stdc++.h>
using namespace std;
int a[110][110];
queue<int>q[4];
int fx[5]={0,0,1,0,-1};
int fy[5]={0,1,0,-1,0};
int tx,ty;
int k=1;
int n,m,i,j;int main()
{cin>>n>>m;a[1][1]=k;k++;q[1].push(1);q[2].push(1);while((!q[1].empty())&&(!q[2].empty())){for(i=1;i<=4;i++) {tx=q[1].front()+fx[i];ty=q[2].front()+fy[i];if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&a[tx][ty]==0){q[1].push(tx);q[2].push(ty);a[tx][ty]=k;k++;}} q[1].pop();//类似head++,head前面的不要了 q[2].pop();} for(i=1;i<=n;i++){for(j=1;j<=m;j++){cout<<a[i][j]<<" ";}cout<<endl;} return 0;} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/72270.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超级玛丽中那些不为人知的细节(下):碰撞与跳跃

"God is in the details"上帝存在于细节之中。这是20世纪前期伟大的建筑家路德维希.密斯的口头禅&#xff0c;而这句话也同样被游戏设计师们奉为圭臬。游戏被称为第九艺术&#xff0c;和其它的艺术形式一样&#xff0c;也是通过前人不断的摸索与创新才能形成自己独特…

7-7 超级玛丽 (10 分)

假定有n个城堡&#xff0c;编号为1至n&#xff0c;有的城堡之间有道路直接相连&#xff0c;有的城堡之间没有道路直接相连。马里奥现在准备从一个城堡出发前往另一个城堡&#xff0c;它有一个魔法棒&#xff0c;可以瞬时通过一条道路&#xff0c;即以0时间通过这条道路&#xf…

Keras利用卷积神经网络玛丽莲梦露与爱因斯坦的识别Part1

目的 突发奇想想会认为下面这张图片究竟是玛丽莲梦露还是爱因斯坦&#xff0c;主要目的顺便实践练习《Python深度学习》书中的例子&#xff0c;只采用了很小批量的数据&#xff0c;也没有深究如何提高正确率&#xff0c;解决过拟合的问题。详细可以参见《python深度学习》第五章…

玛丽莲·梦露从未公开的照片

世界著名的摄影师伊夫 阿诺德最近将几张玛丽莲梦露从未公开的照片限量分发给了英国几个选定的画廊。 已经94岁高龄的阿诺德当年与梦露建立了互相信任的关系&#xff0c;拍了许多反映梦露私秘生活的照片&#xff0c;但她很少将这些照片公之于众&#xff0c;借助曝露名人的隐私来…

定制化需求|一个人工智能大模型应用的算力成本有多高?

“ 人工智能的核心是算力。” 01 — 需要多少预算&#xff1f; 最近在学习大模型ChatGPT、ChatGLM&#xff0c;研究结合企业的应用场景&#xff0c;解决一些业务难点、痛点&#xff0c;不免涉及本地化部署、微调、训练、知识库文档数据提取等等方面的问题。‍‍‍‍ 同时还需要…

一键在线生成朋友圈转发点赞截图教程

1.我们首先打开朋友圈转发截图生成工具网站&#xff1a;https://oss.361s.cn/tool/pyq/ 2.输入自己的微信昵称&#xff0c;上传头像&#xff0c;撰写文本等等&#xff0c;自定义设置完成之后点击生成即可获得你想要的朋友圈截图。 3.点击保存即可完成全部流程。 本文转载自…

朋友圈转发截图生成工具HTML源码

正文: 朋友圈转发截图生成工具HTML源码&#xff0c;微信朋友圈截图模拟器源码&#xff0c;微信朋友圈装逼生成器大全&#xff0c;上传服务器即可使用&#xff0c;装逼必备&#xff0c;有条件的可以打包成AP。 下载方式: lanzou.com/iXBIb033ddgj

朋友圈转发截图生成工具源码

微信朋友圈截图模拟器源码&#xff0c;微信朋友圈装逼生成器大全&#xff0c;上传服务器即可使用&#xff01;装逼必备&#xff01;有条件的可以打包成APP 图片&#xff1a; 学习资料地址&#xff1a;朋友圈转发截图生成工具源码.zip - 蓝奏云

用itchat爬取朋友圈好友信息

用itchat爬取微信好友基本信息 Python有一个好玩的软件包itchat&#xff0c;提供了一个微信api接口&#xff0c;借此可以爬取朋友圈的一些基本信息&#xff0c;下面我们一起来玩玩吧。 import itchat import numpy as np import pandas as pd from collections import defaul…

微信转发指定的图文消息到朋友圈(JAVA版)

微信转发图文消息步骤 微信转发图文消息步骤 需求获取凭证 获取aceess_token获取jsapi_ticket缓存获取的jsapi_ticket代码 config接口注入权限 引入js文件微信权限注入接口 JS-SDK分享接口调用总结温馨提示 需求 当用户购买成功一样产品&#xff0c;为了使用户能够二次消费&a…

生成朋友圈转发点赞截图的小工具

当当当当&#xff01;开工大吉&#xff01; 新春虎年的第一个工作日&#xff0c;相信有不少的小伙伴跟TJ君一样&#xff0c;斗志满满的开始了新一年的工作之旅。 也肯定有不少的小伙伴还在休假&#xff0c;享受一年难得的相聚。 那么春节期间&#xff0c;大家都去了什么好玩的地…

微信截图不能截微信界面

有时候&#xff0c;大家用电脑微信快捷键 Alt A 时&#xff0c;不能截取 微信窗口 界面。 大家可能很迷茫&#xff0c;不要慌&#xff0c;so easy,一招搞定 1&#xff1a;点击微信聊天界面 小剪刀 2&#xff1a; 取消 截图时隐藏当前窗口 大功告成。

kafka消费指定每次最大消费消息数量 max.poll.records

一个属于new consumer的配置项&#xff0c;出现在0.10及其以上版本中。 #一次调用poll()操作时返回的最大记录数&#xff0c;默认值为500 spring.kafka.consumer.max-poll-records; Properties properties new Properties();properties.put("max.poll.records",2);…

Kafka 消费者读取数据

更多内容&#xff0c;前往 IT-BLOG 消费者不需要自行管理 offset&#xff08;分组topic分区&#xff09;&#xff0c;系统通过 broker 将 offset 存放在本地。低版本通过 zk 自行管理。系统自行管理分区和副本情况。消费者断线后会自动根据上一次记录的 offset 去获取数据&…

Kafka消费异常处理

异常 org.apache.kafka.clients.consumer.CommitFailedException: Commit cannot be completed since the group has already rebalanced and assigned the partitions to another member. This means that the time between subsequent calls to poll() was longer than the …

账户系统,余额与体现

参考连接: https://blog.pingxx.com/2018/02/27/用户账户系统该怎么用?/ 账户体系的建立实际上是将结清算分开(即实时清算/定时结算)利于更复杂的支付业务(如分账/层级分润等): 建立账户体系时要根据业务需求考虑各种账户(如余额账户/冻结资金账户/红包账户(不能提现但是能…

微信支付成功,如何刷新用户当前页面的余额

本项目中&#xff0c;使用微信支付&#xff0c;支付成功后&#xff0c;弹出提示框&#xff0c;并且目的是改变当前用户的余额。。。我们在互动直播项目中发现 &#xff0c;然而事情并没有那么简单。 代码如下&#xff1a; 我们知道&#xff0c;应该在appdelegate中调用微信支…

开源趣事~ 记给 OpenHarmony 提 PR 的那些事

大家好哇&#xff0c;许久不见&#xff0c;也感谢大家这么久一直以来的关注&#xff0c;也感谢在短视频盛行的今天&#xff0c;你们还能静下心来坚守文字的阵地。 说到这次的主题&#xff0c;参加鸿蒙项目的开源&#xff0c;也是小编第一次拥抱开源&#xff0c;就像是别人有困…

基于大规模边缘计算的千万级聊天室技术实践

在技术的迭代更新下&#xff0c;面对大型、超大型的直播场景&#xff0c;大规模边缘聊天室成为新热潮。 作者 | 张超 责编 | 王子彧 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 当前直播成为一种流行趋势&#xff0c;带货直播&#xff0c;网红带货&#…

JavaScript成功背后的四个关键人物!

前言&#xff1a;JavaScript能如此成功&#xff0c;至少有四位关键人物&#xff1a; 1. JavaScript作者Brendan Eich 2. JSLint&#xff0c;JSON作者Douglas Crockford 3. jQuery作者John Resig 4. Node.js作者Ryan Dahl。 Brendan Eich以及JavaScript的发明过程大家已经非常熟…