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

矩阵特殊打印方式

  小伙伴们大家好,好几天没更新了,主要有个比赛。从今天起继续给大家更新,今天给大家带来一种新的题型:矩阵特殊打印方式。

螺旋打印矩阵

解题思路

  首先给大家看一下什么是螺旋方式打印:

  就像这样一直转圈圈。

  我想大多数小伙们们看到这道题目,肯定会考虑打印时,什么情况往下走,什么时候往左走,什么时候往右走,什么时候往上走,以及走到哪。当然,这种方法可以作出此题目,但太麻烦了,且耗费时间长。

  这里我给出大家一种好办法:

  开始时标记矩阵左上角和右下角,将外圈打印完(第一行,第5列,第3行,第1列)。然后将左上角位置横纵坐标均加一,右下角横纵坐标均减一。再次打印新的外圈。直到左上角和右下角错位代表均打印完毕。

代码分析

#include<iostream>
using namespace std;
int arr[10][10];
void printinfo(int startx,int starty,int endx,int endy){//同行 if(startx==endx){for(int i=starty;i<=endy;i++){cout<<arr[startx][i]<<" ";}return;}//同列if(starty==endy){for(int i=startx;i<=endx;i++){cout<<arr[i][starty]<<" ";}return;} //一般情况 for(int i=starty;i<=endy;i++){cout<<arr[startx][i]<<" ";} for(int i=startx+1;i<=endx;i++){cout<<arr[i][endy]<<" ";} for(int i=endy-1;i>=starty;i--){cout<<arr[endx][i]<<" ";} for(int i=endx-1;i>=startx+1;i--){cout<<arr[i][starty]<<" ";} 
}
int main(){int n,m;cin>>n>>m;for(int i=0;i<n;i++){for(int j=0;j<m;j++){cin>>arr[i][j];}}int startx=0,starty=0,endx=n-1,endy=m-1;while(startx<=endx&&starty<=endy){printinfo(startx,starty,endx,endy);startx++;starty++;endx--;endy--;}
}

  大家要注意左上角元素和右下角元素可能处于同行或者同列。打印时注意不要重复打印!!

正方形顺时针旋转90度后打印 

解题思路

  这道题目我想大家都知道什么意思,就是将矩阵往右翻个再打印。

  翻转后,1号元素来到3号元素位置。2号元素来到6号元素位置。3号元素来到9号元素位置......

如果我们将正方形分为两组,分别是:1、3、9、7     2、6、8、4。我们每一次循环对每一组的位置进行交换,那么当我们完成对每一组的交换后,最外圈就旋转了90度!!此时我们再将左上角和右下角分别向右下和坐上移动,让新的外圈选择90度,当左上角位置和右上角位置重合时,即代表结束。

  我们考虑一般情况:正方形规模为n*n,那么我们需要分为n-1组(每一圈)。对于第i组(i从0开始编号),其左上角位置为(startx,starty),右下角位置为(endx,endy)。第一个元素其位置为arr【startx】【starty+i】,第二个元素位置为arr【startx+i】【endy】,第三个元素位置为arr【endx】【endy-i】,第四个元素位置为arr【endx-i】【starty】。对于每一组均交换四个位置元素值,完成每一圈。然后左上角和右下角位置分别往右下角和左上角移动,重复操作。知道startx>=endx(因为是正方形,横纵坐标相同)。

代码分析

#include<iostream>
using namespace std;
int arr[10][10]; 
void printinfo(int startx,int starty,int endx,int endy){//组别 int size=endy-starty;for(int i=0;i<size;i++){//第i组第一个   arr[startx][starty+i];//第i组第二个   arr[startx+i][endy];//第i组第三个   arr[endx][endy-i];//第i组第四个   arr[endx-i][starty] //交换四个位置元素即可int temp;temp=arr[startx][starty+i];arr[startx][starty+i]=arr[endx-i][starty];arr[endx-i][starty]=arr[endx][endy-i];arr[endx][endy-i]=arr[startx+i][endy];arr[startx+i][endy]=temp;}for(int i=0;i<4;i++){for(int j=0;j<4;j++){cout<<arr[i][j]<<" ";}cout<<endl;}cout<<endl;
}
int main(){int n,m;cin>>n>>m;for(int i=0;i<n;i++){for(int j=0;j<m;j++){cin>>arr[i][j];}}cout<<endl;int startx=0,starty=0,endx=n-1,endy=m-1;while(startx<endx){printinfo(startx,starty,endx,endy);startx++;starty++;endx--;endy--;}
}

zigzag打印矩阵 

解题思路

  打印方式如上图所示。这道题我们依然使用两个位置,初始时均位于左上角 。但某种次序打印位于二者之间的元素。然后一个位置往右走,一个位置往左走,再按相反的次序打印位于二者联系之间的元素。当向右走的位置无法向右走时就向下走,当向下走的位置无法向下走时就向右走。当两者无论如何怎么走都会越界时代表结束(此时二者均在右下角)。打印次序的确定我们可以使用标志变量确定。

代码分析

#include<iostream>
using namespace std;
int arr[10][10]; 
void printinfo(int a,int b,int c,int d,int flag){//左下往右上 int i,j;if(flag>0){i=a;j=b;while(i>=c&&j<=d){cout<<arr[i][j]<<" ";i--;j++;}}//右上向左下 else{i=c;j=d;while(i<=a&&j>=b){cout<<arr[i][j]<<" ";i++;j--;}}
}
int main(){int n,m;cin>>n>>m;for(int i=0;i<n;i++){for(int j=0;j<m;j++){cin>>arr[i][j];}}cout<<endl;int a,b,c,d;a=b=c=d=0;int flag=1;while(a<n&&b<m&&c<n&&d<m){printinfo(a,b,c,d,flag);if(a<n-1){a++;}else{b++;}if(d<m-1){d++;}else{c++;}flag=-flag;}
}

  本期代码分析结束,主要是告诉大家遇见特殊矩阵打印方式时,大家能够从整体分析,而步局限于局部。多多点赞支持一下吧!! 

相关文章:

矩阵特殊打印方式

小伙伴们大家好&#xff0c;好几天没更新了&#xff0c;主要有个比赛。从今天起继续给大家更新&#xff0c;今天给大家带来一种新的题型&#xff1a;矩阵特殊打印方式。 螺旋打印矩阵 解题思路 首先给大家看一下什么是螺旋方式打印&#xff1a; 就像这样一直转圈圈。 我想大多…...

OCC 拟合的平面转换为有界平面

问题&#xff1a;针对导入的部分面无法获取大小&#xff0c;同时也无法判断点是否在面上。但是OBB可以获取大小 解决方法&#xff1a;通过面拟合转换gp_Pln&#xff0c;然后获取面的内外边&#xff0c;重新修剪生成新的TopoDS_Face 疑问&#xff1a;本人对OCC中各种面的特性不…...

Nginx性能优化的几个方法

文章目录 一 Nginx 配置优化二 缓存利用三 压缩策略四 安全性优化修改配置文件修改 Nginx 源码使用第三方模块 五 监控和日志优化六 系统层面优化七 故障转移优化 小伙伴们平时使用 Nginx 是否有进行过性能优化呢&#xff1f;还是软件装好了就直接使用呢&#xff1f; 今天松哥和…...

Unity性能优化5【物理篇】

1.刚体的碰撞检测属性首选离散型 离散碰撞的缺点是小物体快速移动时&#xff0c;有丢失碰撞的风险。此下拉菜单中&#xff0c;越下面的选项碰撞检测频率越高&#xff0c;性能消耗也显著增加。因此在选择碰撞检测类型时尽量选择离散型。 2.优化碰撞矩阵 合理标记碰撞矩阵可以减…...

我的工具列表

开发工具 名称备注Visual Studio微软开发工具集Visual Studio Code代码编辑器Qt CreatorQt IDEQt Design StudioQt 界面设计器linguistQt 国际化翻译PyCharmPython IDEVMware Workstation Pro虚拟机MATLAB数据计算和仿真Keil单片机 IDENavicat Premium数据库管理MobaXterm远程…...

985研一学习日记 - 2024.11.5

一个人内耗&#xff0c;说明他活在过去&#xff1b;一个人焦虑&#xff0c;说明他活在未来。只有当一个人平静时&#xff0c;他才活在现在。 日常 1、起床6:00 2、健身1.5h 今天练了胸&#xff0c;然后跑了会步&#xff0c;又吃多了&#xff0c;明天少吃点&#xff01; 3、…...

Vue2 与 Vue3 的区别

Vue.js 作为流行的前端框架&#xff0c;已经经历了多次版本的更新迭代&#xff0c;从 Vue2 到 Vue3 的转变不仅带来了新的功能&#xff0c;也在性能、开发体验等方面作出了显著改进。无论是对于新手还是有经验的开发者&#xff0c;了解这两个版本之间的差异都至关重要。本文将讨…...

虚拟现实技术课程开发思路

文章目录 组队选题立项分工建模说明&#xff1a;场景说明&#xff1a;交互说明&#xff1a; 结语&#xff1a; 前言&#xff1a;最近学弟学妹们反馈水水老师课程开始上强度了。不仅有翻转课堂&#xff0c;还有理论课实验课都要做东西出来。听说理论课是做什么博物馆什么的&…...

triangle_area_calculators库发布

最近将在pip网站上发布triangle_area_calculators库&#xff08;我编写的python第三方库&#xff09; triangle_area_calculators库用于计算不同类型及不同已知量的三角形面积 在triangle_area_calculators库中&#xff0c;有一个名为TriangleAreaCalculators的类 可以通过f…...

ClickHouse数据库SSL配置和SSL连接测试

目录 1.Server SSL配置介绍 2.Client SSL访问配置的介绍 3.my测试环境上开启ClickHouse Server SSL配置 & 客户端SSL访问的配置流程 4.附录 1&#xff09;SSL证书的几种类型 单域名SSL证书 通配符SSL证书 多域名SSL证书 多域名通配符SSL证书 2&#xff09;单域名…...

云渲染与汽车CGI图像技术优势和劣势

在数字时代&#xff0c;云渲染技术以其独特的优势在汽车CGI图像制作中占据了重要地位。云渲染通过利用云计算的分布式处理能力&#xff0c;将渲染任务分配给云端的服务器集群进行计算&#xff0c;从而实现高效、高质量的渲染效果。 这种技术的优势主要体现在以下几个方面&#…...

信号与噪声分析——第二节:随机变量的统计特征

2.1 单个随机变量的统计特征 随机变量是什么&#xff1f; 当随机变量X的取值个数是有限个的时候&#xff0c;我们称它为离散随机变量。 当随机变量X的取值个数是无限个的时候&#xff0c;我们称它为连续随机变量。 1. 分布函数和概率密度 1.分布函数 分布函数 定义为随机变…...

PHP网络爬虫常见的反爬策略

PHP网络爬虫在抓取数据时&#xff0c;常常会遭遇各种反爬策略。这些策略是网站为了保护自身数据不被恶意爬取而设置的。以下是一些常见的PHP网络爬虫反爬策略&#xff1a; IP限制&#xff1a; 这是最常见的反爬虫技术。通过限制IP的访问&#xff0c;可以有效防止恶意的爬虫攻击…...

java java.util.Scanner设置编码

在Java中&#xff0c;可以通过设置Scanner对象的编码来读取特定编码的输入。 使用Scanner的构造方法时&#xff0c;可以传入一个InputStream对象作为参数来设置编码。例如&#xff0c;如果要设置编码为UTF-8&#xff0c;可以这样写&#xff1a; InputStream inputStream Syst…...

小菜家教平台(二):基于SpringBoot+Vue打造一站式学习管理系统

目录 前言 今日进度 详细过程 一、数据库重构 二、编写登录接口 相关知识点 前言 昨天我们重启了小菜家教平台的开发&#xff0c;创建了新项目并初步进行了配置&#xff0c;今天我们继续。大家要是有需要源码的话可以在评论区跟我说&#xff0c;博客中就不添加源码了~ 今…...

Android AndroidManifest 文件内标签及属性

以下是重新排版后的文章&#xff1a; AndroidManifest 1. <manifest> 它是AndroidManifest.xml文件的根标签&#xff0c;包含了整个应用程序的基本信息&#xff0c;如应用程序的包名、版本代码、版本名称等。所有其他标签几乎都是在manifest标签内部定义的。 示例&…...

修改sql server 数据库的排序规则Chinese_PRC_CI_AS(字符集+排序)

文章目录 引言I 解决方案案例II 知识扩展排序规则SQL SERVER支持的所有排序规则引言 新增sql server 数据库实例的默认排序规则不支持中文存储,导致乱码 解决方案: 修改排序规则为Chinese_PRC_CI_AS 或者 Chinese_PRC_Stroke_CI_AS_WS或者Chinese_PRC_CI_AI_KS_WS 仅对新增…...

【ChatGPT】让ChatGPT在回答中附带参考文献与来源

让ChatGPT在回答中附带参考文献与来源 在撰写内容时&#xff0c;引用参考文献和来源可以增强信息的可信度和权威性。通过引导ChatGPT生成带有参考文献的回答&#xff0c;用户能够获取更可靠的信息和背景资料。本文将探讨如何有效地引导ChatGPT在回答中附带参考文献与来源。 一…...

云计算 在esxi 如何创建磁盘存储

重启启动...

大屏可视化:舞动数据与美观的“设计秘籍”

大屏可视化鉴赏&#xff1a;踏入软件系统产品设计之旅&#xff0c;让我们一同鉴赏那些闪耀在智慧农业、智慧园区、智慧社区及智慧港口等领域的大屏可视化杰作。每一帧画面&#xff0c;都是科技与创新的完美融合&#xff0c;数据跃然屏上&#xff0c;智慧触手可及。 >> 数…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中&#xff0c;群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS&#xff0c;在uniapp中实现&#xff1a; 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

热烈祝贺埃文科技正式加入可信数据空间发展联盟

2025年4月29日&#xff0c;在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上&#xff0c;可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞&#xff0c;强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...

C# winform教程(二)----checkbox

一、作用 提供一个用户选择或者不选的状态&#xff0c;这是一个可以多选的控件。 二、属性 其实功能大差不差&#xff0c;除了特殊的几个外&#xff0c;与button基本相同&#xff0c;所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...