当前位置: 首页 > wzjs >正文

网页内嵌网站b站推广网站入口

网页内嵌网站,b站推广网站入口,淮南seo,怎样在网站上做营业执照公示描述 马里奥是一个快乐的油漆工人,这天他接到了一个油漆任务,要求马里奥把一个 n 行 m 列的矩阵每一格都用油漆标记一个数字,标记的顺序按照广度优先搜索的方式进行,也就是他会按照如下方式标记: 1 、首先标记第 1 行…

描述

马里奥是一个快乐的油漆工人,这天他接到了一个油漆任务,要求马里奥把一个 n 行 m 列的矩阵每一格都用油漆标记一个数字,标记的顺序按照广度优先搜索的方式进行,也就是他会按照如下方式标记:
1 、首先标记第 1 行第 1 列的单元格,标记数字为 1 ;
2 、然后标记当前单元格上下左右四个方向所有能标记的单元格,且:
① 标记顺序按照:右、下、左、上的优先级;
② 不能标记到矩阵外,且标记过的数字不能重复标记;
3 、当本单元格标记结束,寻找比本单元格中数字大 1 的单元格,标记那个单元格的上下左右四个方向,也是按照步骤 2 所示的要求进行标记。
依次类推,直到所有单元格都被标记。
比如:如果有一个3 * 3 的矩阵如下,那么首先标记 1,1 单元格,并按照上面步骤 2 的要求标记其四周能够标记的单元格,标记结果如下:
 


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


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


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


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


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


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

输入描述

两个整数 n 和 m , n 和 m 都是 3~100 之间的整数。

输出描述

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

用例输入 1 

3 3

用例输出 1 

1 2 4
3 5 7
6 8 9

来源

广搜

AC CODE

#include<bits/stdc++.h>
using namespace std;int a[110][110],q[10100][3];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 head=1,tail=1;int main()
{cin>>n>>m;a[1][1]=k;k++;q[1][1]=1;q[1][2]=1;while(head<=tail){for(i=1;i<=4;i++){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;} 

题目详解

一、问题核心理解

这道题要求我们使用广度优先搜索(BFS)对n×m矩阵进行数字标记,核心规则是:

• 从(1,1)位置开始标记为1

• 按"右、下、左、上"的优先级顺序标记相邻未访问格子

• 每次处理完当前层级,按数字递增顺序处理下一层级

二、代码整体架构

代码采用经典BFS实现,主要包含:

• 矩阵存储结构 a[110][110]

• 队列结构 q[10100][3] 用于BFS遍历

• 方向数组 fx[] 和 fy[] 定义搜索顺序

三、关键代码详解

1. 方向数组设计

int fx[5]={0,0,1,0,-1};  // x方向偏移量
int fy[5]={0,1,0,-1,0};  // y方向偏移量


• 索引1-4对应"右、下、左、上"四个方向

• 偏移量设计:

◦ 右:(0,1) 列+1

◦ 下:(1,0) 行+1

◦ 左:(0,-1) 列-1

◦ 上:(-1,0) 行-1

2. 初始化操作

cin>>n>>m;
a[1][1]=k;  // 起点(1,1)标记为1
k++;        // 下一个标记值准备q[1][1]=1;  // 起点入队
q[1][2]=1;


• 矩阵下标从1开始,符合题目习惯

• 队列初始存入起点坐标(1,1)

3. BFS核心逻辑

while(head<=tail)  // 队列非空时循环
{for(i=1;i<=4;i++)  // 按优先级遍历四个方向{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++;  // 处理完当前节点,队头指针后移
}


• 队列采用"头进头出"的BFS标准模式

• 每个节点出队时,按优先级检查四个方向

• 合法新节点入队并标记,保证按层次遍历

4. 结果输出

for(i=1;i<=n;i++)
{for(j=1;j<=m;j++){cout<<a[i][j]<<" ";}cout<<endl;
}


• 按行优先顺序输出矩阵

• 每个数字后加空格,符合题目格式要求

四、算法执行过程分析

以3×3矩阵为例:

1. 初始队列:[(1,1)],标记a[1][1]=1

2. 处理队头(1,1),按顺序检查四个方向:

◦ 右(1,2)合法,标记为2并入队

◦ 下(2,1)合法,标记为3并入队

◦ 左(1,0)越界,跳过

◦ 上(0,1)越界,跳过
此时队列:[(1,2),(2,1)]

3. 处理队头(1,2),检查方向:

◦ 右(1,3)合法,标记为4并入队

◦ 下(2,2)合法,标记为5并入队

◦ 左(1,1)已标记,跳过

◦ 上(0,2)越界,跳过
队列更新:[(2,1),(1,3),(2,2)]

4. 以此类推,最终得到题目要求的标记结果

五、算法复杂度分析

• 时间复杂度:O(n×m),每个格子最多入队一次

• 空间复杂度:O(n×m),队列和矩阵存储需求

• 优化点:队列大小设为10100,足够容纳100×100矩阵的所有格子

六、总结

该代码通过标准BFS实现了题目要求的矩阵标记逻辑,核心在于:

1. 方向数组的优先级顺序设计

2. 队列的正确入队出队操作

3. 矩阵边界和已标记状态的检查

这种BFS遍历方式保证了每个格子按层次顺序被标记,完美符合题目要求的"广度优先搜索"规则。

http://www.dtcms.com/wzjs/506914.html

相关文章:

  • 主播网站开发百度电话怎么转人工客服
  • 宝贝我想跟你做网站专业网络推广公司
  • 北京网站开发网站建设报价百度邮箱注册入口
  • 怎么连接网站的虚拟主机互动营销是什么
  • 网站地图生成软件镇江seo快速排名
  • 网站编辑做图片用什么小说榜单首页百度搜索风云榜
  • 浙江平台网站建设哪家有360优化大师最新版
  • 提供网站建设定制优化设计七年级下册数学答案
  • 网站建设保报价文档百度关键词查询排名怎么查
  • 网站开发找聚脑网管理培训班
  • wordpress html 标签页万秀服务不错的seo推广
  • dw中旅游网站怎么做十大管理培训课程
  • 个人网站开发合同seo优化网站查询
  • eclipse怎么做网站nba最新排行
  • wordpress 文章分页代码网站seo关键词排名
  • 网站建设开发原代码归属精准防控高效处置
  • 济南网络推广外包公司seo优化实训总结
  • 房产网站内容建设规划昆明seo建站
  • 做商城网站合作合同百度网盘免费下载
  • wordpress转中文版揭阳seo推广公司
  • 网站点击量软件电工培训学校
  • 闸北建设机械网站竞价开户公司
  • 帝国企业网站模板网站一级域名和二级域名
  • ux主题 wordpress泰州seo公司
  • 网站建设需求说明书百度下载2021新版安装
  • 软件开发商网站网站开发月薪多少钱
  • 马大姐网站建设目的上海网站建设开发公司
  • 表白网站如何做市场调研和分析
  • 打电话沟通做网站个人网站注册平台
  • 小学网站源码php百度引流免费推广怎么做