当前位置: 首页 > 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;智慧触手可及。 >> 数…...

突破学术翻译障碍:Zotero PDF Translate文献阅读效率提升指南

突破学术翻译障碍&#xff1a;Zotero PDF Translate文献阅读效率提升指南 【免费下载链接】zotero-pdf-translate 支持将PDF、EPub、网页内容、元数据、注释和笔记翻译为目标语言&#xff0c;并且兼容20多种翻译服务。 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-p…...

ROS小车仿真进阶:手把手教你用URDF和Xacro为阿克曼转向车‘造轮子’

ROS阿克曼转向车仿真实战&#xff1a;从URDF建模到Gazebo调试全解析 当你在Gazebo中第一次看到自己搭建的阿克曼转向车完美执行转弯指令时&#xff0c;那种成就感堪比看着孩子学会骑自行车。作为ROS开发者&#xff0c;掌握URDF/Xacro建模技术就像获得了一把打开机器人世界的万能…...

SLAM算法评测神器evo:从安装到实战的完整避坑指南

SLAM算法评测神器evo&#xff1a;从安装到实战的完整避坑指南 在机器人定位与建图&#xff08;SLAM&#xff09;领域&#xff0c;算法性能评测是验证研究成果可靠性的关键环节。而evo作为一款轻量级、模块化的评测工具&#xff0c;凭借其强大的可视化能力和丰富的指标计算功能…...

【第四周】论文精读:RAG4DMC:用于数据级模态补全的检索增强生成

前言&#xff1a;在多模态应用中&#xff0c;数据往往面临“模态缺失”的窘境&#xff08;如仅有图片无文字&#xff0c;或仅有文字无图片&#xff09;&#xff0c;这严重限制了模型的训练与应用。虽然预训练生成模型&#xff08;如 Diffusion、LLM&#xff09;看似是天然的解法…...

芯片创业资金消耗与团队构建全解析

芯片初创公司的资金消耗分析&#xff1a;从架构设计到流片量产1. 芯片创业的资金挑战概述芯片设计行业作为典型的技术密集型产业&#xff0c;其创业过程面临着独特的资金挑战。与互联网创业不同&#xff0c;芯片公司从组建团队到产品量产需要经历漫长的研发周期和巨额的资金投入…...

我的世界Java版1.21.4的Fabric模组开发教程(二)创建物品

这是适用于Minecraft Java版1.21.4的Fabric模组开发系列教程专栏第二章——创建物品。想要阅读其他内容&#xff0c;请查看或订阅上面的专栏。 物品(Items) 指的是可以被玩家和其他实体拾起并使用的元素。想要在Minecraft中添加自己的物品&#xff0c;通常需要完成下面的步骤&…...

5步实现消息永久可见:微信QQ防撤回设置完全指南

5步实现消息永久可见&#xff1a;微信QQ防撤回设置完全指南 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁&#xff08;我已经看到了&#xff0c;撤回也没用了&#xff09; 项目地址: https://gitcode.com/GitH…...

终极Lens界面定制指南:3个实用技巧提升Kubernetes管理效率

终极Lens界面定制指南&#xff1a;3个实用技巧提升Kubernetes管理效率 【免费下载链接】lens Lens - The way the world runs Kubernetes 项目地址: https://gitcode.com/gh_mirrors/le/lens Lens作为全球最受欢迎的Kubernetes IDE&#xff0c;凭借其直观的上下文感知界…...

清华大学LaTeX论文模板完整路线图:未来发展与功能规划指南

清华大学LaTeX论文模板完整路线图&#xff1a;未来发展与功能规划指南 【免费下载链接】thuthesis LaTeX Thesis Template for Tsinghua University 项目地址: https://gitcode.com/gh_mirrors/th/thuthesis 清华大学LaTeX论文模板&#xff08;thuthesis&#xff09;是清…...

pingfs安全分析:ICMP存储的数据安全性与风险防护指南

pingfs安全分析&#xff1a;ICMP存储的数据安全性与风险防护指南 【免费下载链接】pingfs Stores your data in ICMP ping packets 项目地址: https://gitcode.com/gh_mirrors/pi/pingfs 在当今网络安全日益重要的时代&#xff0c;pingfs作为一个创新的文件系统项目&…...