螺旋矩阵、旋转矩阵、矩阵Z字打印
螺旋矩阵

#include <iostream>
#include <vector>
void display(std::vector<std::vector<int>>&nums){for(int i = 0; i < nums.size(); ++i){for(int j = 0; j < nums[0].size(); ++j){std::cout<<nums[i][j]<<' ';}std::cout<<std::endl;}
}
void Process(int x1, int y1, int x2, int y2, std::vector<std::vector<int>>&nums){if(x1 == x2){while (y1 <= y2){std::cout<<nums[x1][y1++]<<' ';} } else if(y1 == y2){while (x1 <= x2){std::cout<<nums[x1++][y1]<<' ';} }else{for(int i = y1; i <= y2; ++i){std::cout<<nums[x1][i]<<' ';}for(int i = x1 + 1; i <= x2; ++i){std::cout<<nums[i][y2]<<' ';}for(int i = y2 - 1; i >= y1; --i){std::cout<<nums[x2][i]<<' ';}for(int i = x2 - 1; i > x1; --i){std::cout<<nums[i][y1]<<' ';}}
}
int main(){std::vector<std::vector<int>>nums;int n = 6;int m = 6;nums.resize(n);int num = 1;for(int i = 0; i < n; ++i){std::vector<int>tmp(m, 0);for(int j = 0; j < m; ++j){tmp[j] = num++;}nums[i] = tmp;}display(nums);// 矩阵类型的题目可以枚举一些特殊的点来做左上角点和右下角点, 然后在往内部收缩int x1 = 0, y1 = 0, x2 = n-1, y2 = m-1;while (x1 <= x2){Process(x1, y1, x2, y2, nums);++x1;++y1;--x2;--y2;}std::getchar();}
旋转矩阵
类似于这个螺旋矩阵我们也是在每次处理最外层的矩形,然后往内收缩。
对于一个矩形我们选取四个点依次进行交换即可
#include <iostream>
#include <vector>
void display(std::vector<std::vector<int>>&nums){for(int i = 0; i < nums.size(); ++i){for(int j = 0; j < nums[0].size(); ++j){std::cout<<nums[i][j]<<' ';}std::cout<<std::endl;}
}
void Process(int x1, int y1, int x2, int y2, std::vector<std::vector<int>>&nums){if(x1 == x2){while (y1 <= y2){std::cout<<nums[x1][y1++]<<' ';} } else if(y1 == y2){while (x1 <= x2){std::cout<<nums[x1++][y1]<<' ';} }else{for(int i = y1; i <= y2; ++i){std::cout<<nums[x1][i]<<' ';}for(int i = x1 + 1; i <= x2; ++i){std::cout<<nums[i][y2]<<' ';}for(int i = y2 - 1; i >= y1; --i){std::cout<<nums[x2][i]<<' ';}for(int i = x2 - 1; i > x1; --i){std::cout<<nums[i][y1]<<' ';}}
}
int main(){std::vector<std::vector<int>>nums;int n = 4;int m = 4;nums.resize(n);int num = 1;for(int i = 0; i < n; ++i){std::vector<int>tmp(m, 0);for(int j = 0; j < m; ++j){tmp[j] = num++;}nums[i] = tmp;}display(nums);// 枚举矩阵的四个点把最外圈的给调整好再往内圈收缩int x1, y1, x2, y2, x3, y3, x4, y4;int count = 0;while(count < n -2){x1 = count, y1 = count;x2 = count, y2 = n - 1 - count;x3 = n - 1 - count, y3 = count;x4 = n - 1 - count, y4 = n - 1 - count;while(y1 < y2 && x2 < x4 && y4 > y3 && x3 > x1){std::swap(nums[x1][y1], nums[x2][y2]);std::swap(nums[x1][y1], nums[x4][y4]);std::swap(nums[x1][y1], nums[x3][y3]);++y1;++x2;--y4;--x3;}++count;}display(nums);std::getchar();}
矩阵Z字打印
也是和螺旋矩阵类似选取两个点进行循环
#include <iostream>
#include <vector>
void display(int x1, int y1, int x2, int y2, std::vector<std::string>&strs){if(x1 < x2){while ( x1 <= x2 ){std::cout<<strs[x1++][y1--]<<' ';}std::cout<<std::endl; } else{while ( x1 >= x2 ){std::cout<<strs[x1--][y1++]<<' ';}std::cout<<std::endl; }
}
int main(){std::vector<std::string>strs = {"abcd", "efgh", "jklh"};int n = strs.size();int m = strs[0].size();int x1 = 0, y1 = 0;int x2 = 0, y2 = 0;int num = 0;while(x1 < n){if(num % 2 == 0){display(x1, y1, x2, y2, strs);} else{display(x2, y2, x1, y1, strs);}if(y1 < m - 1){y1++;}else{x1++;}if(x2 < n - 1){x2++;}else{y2++;}num++;} std::getchar();}
矩阵打印的题目可以从选取若干个点然后处理一层之后再往内进行收缩的做法先进行考虑
相关文章:
螺旋矩阵、旋转矩阵、矩阵Z字打印
螺旋矩阵 #include <iostream> #include <vector> void display(std::vector<std::vector<int>>&nums){for(int i 0; i < nums.size(); i){for(int j 0; j < nums[0].size(); j){std::cout<<nums[i][j]<< ;}std::cout<<…...
Seaborn绘制热力图的子图
Seaborn绘制热力图的子图 提示:如何绘制三张子图 绘制的时候,会出现如下问题 (1)如何绘制1*3的子图 (2)三个显示条,如何只显示最后一个 提示:下面就展示详细步骤 Seaborn绘制热力…...
C++二级题目4
小白鼠再排队 不会 多余的数 #include<iostream> #include<string.h> #include<stdio.h> #include<iomanip> #include<cmath> #include<bits/stdc.h> int a[2000][2000]; int b[2000]; char c[2000]; long long n; using namespace std; i…...
Tomcat 部署时 war 和 war exploded区别
在 Tomcat 调试部署的时候,我们通常会看到有下面 2 个选项。 是选择war还是war exploded 这里首先看一下他们两个的区别: war 模式:将WEB工程以包的形式上传到服务器 ;war exploded 模式:将WEB工程以当前文件夹的位置…...
Delphi IdTcpServer IdTcpClient 传输简单文本
Delphi IdTcpServer IdTcpClient 传输简单文本 已经很久敲代码了,想找一段直接Delphi11 TCP简单文本传输,费劲!FStringStream 、FStrStream : FStringStream:TStringStream.Create(,TEncoding.UTF8); 已经很久敲代码了,…...
界面控件Telerik UI for WPF——Windows 11主题精简模式提升应用体验
Telerik UI for WPF拥有超过100个控件来创建美观、高性能的桌面应用程序,同时还能快速构建企业级办公WPF应用程序。Telerik UI for WPF支持MVVM、触摸等,创建的应用程序可靠且结构良好,非常容易维护,其直观的API将无缝地集成Visua…...
PoseC3D 基于人体姿态的动作识别新范式
摘要1. Introduction2. Related Work动作识别 3D-CNN基于骨架的动作识别 GCN基于骨骼的动作识别 2D-CNN3. Framework3.1. Good Practice for Pose Extraction3.2. From 2D Poses to 3D Heatmap Volumes3.3 基于骨骼的动作识别 3D-CNNPose-SlowOnlyRGBPose-SlowFast4. Experimen…...
html2canvas 截图空白 或出现toDataURL‘ on ‘HTMLCanvasElement或img标签没截下来 的所有解决办法
1.如果截图空白: 1.1以下的参数是必须要有的。 width: shareContent.offsetWidth, //设置canvas尺寸与所截图尺寸相同,防止白边height: shareContent.offsetHeight, //防止白边logging: true,useCORS: true,x:0,y:0,2,如果出现了报错 toData…...
Eclipse错误提示: Symbol ‘xxxx‘ could not be resolved
问题现象: 调试FPGA时,如果在qsys中增加新的内容,到nios中编译的时候就会提示找不到宏定义。 而这些宏定义都是在system.h这个头文件中的,原来的宏定义都能找到,就是新增的找不到,这个应该和头文件路径没有…...
基于Java的OA办公管理系统,Spring Boot框架,vue技术,mysql数据库,前台+后台,完美运行,有一万一千字论文。
基于Java的OA办公管理系统,Spring Boot框架,vue技术,mysql数据库,前台后台,完美运行,有一万一千字论文。 系统中的功能模块主要是实现管理员和员工的管理; 管理员:个人中心、普通员工…...
正则表达式(JAVA)
正则表达式(JAVA) 文章目录 正则表达式(JAVA)用法字符类(只匹配一个字符)预定义字符(只匹配一个字符)数量词贪婪爬取符号捕获分组规则捕获分组符号 非捕获分组案例忽略大小写 用法 正则表达式在用于校验信息是否满足某些规则的时候,非常的好用 在文本中查找满足要求的内容 字…...
264_BOOST中的Json库解析_BOOST_AUTO(itrpromodel, doc.FindMember(“productmodel“));
BOOST_AUTO(itrpromodel, doc.FindMember("productmodel"));if(itrpromodel != doc.MemberEnd()){BOOST_AUTO(iterd_url...
linux rpm 离线安装 nginx 自用,仅供参考
检查是否安装nginx ps -ef|grep nginx 检查rpm是否安装nginx rpm -qa|grep nginx 查看linux centos 发行版本 cat /etc/centos-release (查看其它发现版本 就把centos替换为别的 比如 红旗的 redflag ) 查看cpu信息 x86_64 lscpu 检查nginx所需依赖 …...
第十二章 YOLO的部署实战篇(上篇)
cuda教程目录 第一章 指针篇 第二章 CUDA原理篇 第三章 CUDA编译器环境配置篇 第四章 kernel函数基础篇 第五章 kernel索引(index)篇 第六章 kenel矩阵计算实战篇 第七章 kenel实战强化篇 第八章 CUDA内存应用与性能优化篇 第九章 CUDA原子(atomic)实战篇 第十章 CUDA流(strea…...
无涯教程-Android - List View函数
Android ListView 是垂直滚动列表中显示的视图,使用 Adapter 从列表(如数组或数据库)中获取内容的列表项会自动插入列表中。 适配器(Adapter)实际上是UI组件和将数据填充到UI组件中的数据源之间的桥梁,适配器保存数据并将数据发送到适配器视图࿰…...
stable diffusion实践操作-重绘
系列文章目录 本文专门开一节写局部重绘相关的内容,在看之前,可以同步关注: stable diffusion实践操作 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、局…...
C# 静态构造函数未执行 .net core框架
代码如下,在执行Encoding.GetEncoding(“gb2312”);方法后报错,说没有找到对应编码,经测试,发现是静态构造函数未执行。 public static class Encodings {/// <summary>/// 注册相关编码/// </summary>static Encodi…...
Java 复习笔记 - 学生管理系统篇
文章目录 学生管理系统一,需求部分需求分析初始菜单学生类添加功能删除功能修改功能查询功能 二,实现部分(一)初始化主界面(二)编写学生类(三)编写添加学生方法(四&#…...
【UIPickerView-UIDatePicker-应用程序对象 Objective-C语言】
一、今天我们来学习三个东西 1.UIPickerView-UIDatePicker-应用程序对象 1.首先,来看数据选择控件 数据选择控件, 大家对这个数据选择控件,是怎么理解的, 1)数据选择控件,首先,是不是得有数据, 2)然后呢,你还得让用户能够选择, 3)最后,你还得是一个控件儿 那…...
仿京东 项目笔记1
目录 项目代码1. 项目配置2. 前端Vue核心3. 组件的显示与隐藏用v-if和v-show4. 路由传参4.1 路由跳转有几种方式?4.2 路由传参,参数有几种写法?4.3 路由传参相关面试题4.3.1 路由传递参数(对象写法)path是否可以结合pa…...
如何用Applite轻松管理macOS应用:告别复杂的终端命令
如何用Applite轻松管理macOS应用:告别复杂的终端命令 【免费下载链接】Applite User-friendly GUI macOS application for Homebrew Casks 项目地址: https://gitcode.com/gh_mirrors/ap/Applite 还在为macOS上的应用安装和更新烦恼吗?Applite这款…...
别再死记硬背公式了!用Python+SymPy手把手推导平面2R机器人动力学方程
用PythonSymPy实战推导平面2R机器人动力学方程 在机器人学领域,动力学方程的推导往往是理论学习中最令人头疼的环节。传统教材中密密麻麻的偏微分符号和冗长的代数运算,让许多初学者望而却步。本文将带你用Python的SymPy符号计算库,从零开始完…...
告别改板焦虑!手把手教你用Ansys Slwave 2022R2搞定PCB信号完整性仿真(附S参数导出Pspice全流程)
告别改板焦虑!Ansys Slwave 2022R2信号完整性仿真实战指南 在高速PCB设计领域,信号完整性问题如同悬在硬件工程师头顶的达摩克利斯之剑。据统计,超过60%的硬件改板需求源于信号完整性问题未被提前发现。本文将带您深入掌握Ansys Slwave 2022R…...
Async1Wire异步1-Wire驱动库:DS18B20非阻塞温度采集方案
1. Async1Wire 库概述Async1Wire 是一个专为嵌入式系统设计的异步 1-Wire 总线驱动库,其核心目标是解耦 1-Wire 通信时序与主程序执行流,避免传统阻塞式实现中长达数百毫秒的delay()等待(如 DS18B20 温度转换期间的 750ms 全局阻塞࿰…...
深度剖析:20206年国内AI应用上市公司谁在领跑?
随着人工智能技术加速向千行百业渗透,AI应用落地能力已成为衡量上市公司核心竞争力的关键标尺。在众多布局AI的上市企业中,新大陆数字技术股份有限公司(股票代码:000997)凭借深厚的产业积淀与前瞻的“支付AI”战略&…...
数据科学模型评估终极指南:交叉验证与性能指标完全解析
数据科学模型评估终极指南:交叉验证与性能指标完全解析 【免费下载链接】awesome-datascience awesome-datascience: 是一个包含各种数据科学资源、工具和实践的汇总列表。适合数据科学家、分析师和开发者查找和学习数据科学的知识和技术。 项目地址: https://git…...
3个秘诀让AI成为你的象棋教练:Vin象棋智能助手完全指南
3个秘诀让AI成为你的象棋教练:Vin象棋智能助手完全指南 【免费下载链接】VinXiangQi Xiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具 项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi 你是否曾遇到这样的象棋困境࿱…...
【OSG学习笔记】Day 17: Shape 与 ShapeDrawable
osg::Shape 与 osg::ShapeDrawable 在 OpenSceneGraph(OSG)三维开发中,除了通过 osg::Geometry 手动构建顶点、索引实现自定义几何体外,OSG 还提供了开箱即用的基础图形封装——osg::Shape 与 osg::ShapeDrawable。 这两个类专门用…...
想转行AI行业?从入门到精通,掌握人工智能的核心技能!非常详细收藏我这一篇就够了
本文详细介绍了如何转行至算法岗,特别是机器视觉算法工程师的路径。文章首先分析了算法岗的要求,包括学历、项目经验、竞赛成绩等,并分享了个人的转行经历。接着,文章系统地梳理了所需的基础知识,如数学、编程语言、数…...
并发编程进阶:volatile、内存屏障与 CPU 缓存机制详解
知识点回顾 1. 什么是CQRS? CQRS是Command Query Responsibility Segregation的缩写,一般称作命令查询职责分离。从字面意思理解,就是将命令(写入)和查询(读取)的责任划分到不同的模型中。 对比…...
