OJ: 蛇形矩阵 螺旋矩阵

2023-11-17

题目描述

  • 题目说明

    在一个N*N的方阵中,填入1,2,…N共N个数,并要求构成如下的格式:N<=10

    例:
    在这里插入图片描述

  • 输入描述

    多组数据,每行读入一个N

  • 输出描述

    对应输出N*N的蛇形矩阵,每个数字占3格子,每个蛇形矩阵之间用空行分割

  • 输入样例

    3
    4

  • 输出样例

      7  8  1
      6  9  2
      5  4  3

     10 11 12  1
      9 16 13  2
      8 15 14  3
      7  6  5  4

实现思路

如图,将该螺旋矩阵的每一环分为4个部分进行讨论:
在这里插入图片描述
从右上部分开始,顺时针对矩阵的4个部分分别进行赋值操作(需要注意使用for循环进行遍历时,每个部分的行列初始值和遍历方向均不同),最外层的每部分分别赋N-1个值,第二层赋(N-1)-2个值,以此类推,进行N/2轮赋值,此时若N为偶数,赋值完成;若N为奇数,则额外对矩阵正中央的元素进行赋值,完成赋值操作。
随后根据需要对矩阵进行遍历输出即可。

实现代码(Java)

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc =new Scanner(System.in);
		while(sc.hasNextInt()) {
			int N = sc.nextInt();
			int[][] matrix = new int[N][N];
			int current = 1;
			for(int lap=0;lap<N/2;lap++) {
				for(int i=lap;i<(N-lap-1);i++)
					matrix[i][N-lap-1] = current++;
				for(int i=N-lap-1;i>lap;i--)
					matrix[N-lap-1][i] = current++;
				for(int i=N-lap-1;i>lap;i--)
					matrix[i][lap] = current++;
				for(int i=lap;i<(N-lap-1);i++)
					matrix[lap][i] = current++;
			}
			if(N%2!=0) 
				matrix[N/2][N/2] = current;
			
			for(int i=0;i<N;i++) {
				for(int j=0;j<N;j++) {
					int output = matrix[i][j];
					if(output/10==0)
						System.out.print("  "+output);
					else if((output/10)>=1&&(output/10)<10)
						System.out.print(" "+output);
					else
						System.out.print(output);
				}
				System.out.println();
			}
			System.out.println();
		}
	}

	
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OJ: 蛇形矩阵 螺旋矩阵 的相关文章

随机推荐

  • 数据结构——第六章 图

    知识框架 主要掌握深度优先搜索和广度优先搜索 图的基本概念及基本性质 图的存储结构 邻接矩阵 邻接表 邻接多重表和十字链表 及其特性 存储结构之间的转化 基于存储结构上的遍历操作和各种应用 拓扑排序 最小生成树 最短路径和关键路径 等 通常
  • npm 常用操纵

    以下操作均已 mkdirp 模块为例 npm模块库查询 1 远程仓库查询 a 查询仓库中模块的信息 npm info mkdirp 查看大图 b 查询仓库中模块的所有版本 npm view mkdirp versions 查看大图 c 查看
  • Pid算法总结笔记(平衡小车部分)

    Pid的三种形式 直立环 速度环 转向环 这三种环代表了小车的三种不同动作 直立 转向 和运行速度 三种不同的构造 三种不同的控制函数 最终的思想都是通过pid算法来控制 一 Pid算法简介 什么是pid Pid总共有三个字符 分别是p i
  • [Python系列-8]:Python之人工智能 - 基本工具 -2- 随机数生成库

    作者主页 文火冰糖的硅基工坊 https blog csdn net HiWangWenBing 本文网址 https mp csdn net mp blog creation editor 119254076 目录 1 什么需要随机数生成
  • Echarts的tooltip显示自定义格式化解决方案

    前言 今天甲方爸爸提出了要求 需要把图表显示的数据保留百分数的小数点后一位 实际上这个显示的问题之前在后台处理数据的时候就处理过 当时是没有保留小数的 后来要求保留小数点后一位就在后台处理了 谁知道 在前台展示的时候 莫名的出现小数点后十几
  • 大数据分析R中泊松回归模型实例

    如果您知道如何以及何时使用泊松回归 它可能是一个非常有用的工具 在大数据分析R中泊松回归模型实例中 我们将深入研究泊松回归 它是什么以及R程序员如何在现实世界中使用它 具体来说 我们将介绍 1 泊松回归实际上是什么 什么时候应该使用它 2
  • Shell重定向 &>file、2>&1、1>&2 、/dev/null的区别

    在shell脚本中 默认情况下 总是有三个文件处于打开状态 标准输入 键盘输入 标准输出 输出到屏幕 标准错误 也是输出到屏幕 它们分别对应的文件描述符是0 1 2 gt 默认为标准输出重定向 与 1 gt 相同 2 gt 1 意思是把 标
  • 下载xlsx中的URL到指定目录

    爱情是灯 友情是影子 当灯灭了 你会发现你的周围都是影子 朋友 是在最后可以给你力量的人 import org apache poi ss usermodel import org apache poi xssf usermodel XSS
  • KVM更改虚拟机默认存储路径

    Virt默认的虚拟机存储路径是 var lib libvirt images 如下图所示 接下来我们创建一个新的存储池 用来存储新建的虚拟机 存储池的名称为vm 路径为 usr local src kvm 新的存储池已创建成功 接下来新建虚
  • 数字IC设计知识点及综合题详解(提前批、秋招必刷基础题)——(二)时序分析基础(Slack、Setup、Hold、Jitter、Skew、亚稳态)异步复位,同步释放

    目录 一 常见名词 1 1 时钟偏移Skew 1 1 1 Skew出现的原因 1 1 2 Skew解决方法 1 2 抖动Jitter 1 2 1 Jitter出现的原因 1 2 2 时钟抖动永远存在 1 3 扇入扇出Fan in Fan o
  • 【最新最详细】SQL Server 2019 安装教程

    最新最详细 SQL Server 2019 安装教程 引言 今天又双叒搞新电脑的环境 对于我这个 Net程序员 那就肯定离不开安装 SQL Server 了 网上没有找到很详细的教程 所以决定自己再写一份 下面直接进入主题 下载SQL Se
  • 基于 Matlab 的 RLS 算法进行时间序列预测

    基于 Matlab 的 RLS 算法进行时间序列预测 时间序列分析在许多领域中都具有重要的应用价值 例如金融 经济 气象等 时间序列预测是其中的一个关键问题 其目的是根据过去一段时间的观测值来预测未来一段时间的值 在本文中 我们将介绍如何使
  • Vue中安装less-loader报错处理

    Vue中使用less 需要安装less loader 1 安装命令 npm install less loader 需要注意的是less loader版本需要和webpack版本对应 版本不对会报错 webpack 4 使用 less lo
  • 【ML on Kubernetes】第 10 章:构建、部署和监控模型

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 从主机备份ubuntu到虚拟机的坑

    系统用的是16 04 1 备份过程 直接采用这个方法 不过我是直接用的镜像 data放在U盘 没有做成启动U盘 参考链接1 问题就来了 直接挂载镜像使用的是CD ROM 可能出现权限问题无法修改 记住要提前把必要的文件保存在虚拟机的系统下
  • Python自动化测试专栏——选择元素基本方法之CSS选择器

    CSS选择器选择元素 1 根据 tag名选择元素 选择 所有的tag名为div的元素 wd find elements by css selector div 2 根据id属性选择元素 wd find element by css sele
  • tensorflow如何更新到最新的版本

    背景 前面在anaconda中使用tensorflow时 在深度学习目标检测的那方面出现了问题 提示 no op 当你在百度上百度这个错误的时候 很多的CSDN博主会告诉你是因为你的tensorflow版本过低 准备 那就是更新tensor
  • MySQL——习题:每个部门当前员工最高薪水

    有一个员工表dept emp简况如下 有一个薪水表salaries简况如下 获取所有部门中员工薪水最高的相关信息 给出dept no emp no以及其对应的salary 按照部门编号升序排列 以上例子输出如下 解法1 SELECT d1
  • 移植Qt4.8.4项目到QT5.2上时遇到的一些问题

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 问题1 Qt 5 2 使用原来的QT4 8 4项目时QWebView QWebFrame等类无法编译通过 出现原因 QWebView QWebFrame QWebPage
  • OJ: 蛇形矩阵 螺旋矩阵

    题目描述 题目说明 在一个N N的方阵中 填入1 2 N共N个数 并要求构成如下的格式 N lt 10 例 输入描述 多组数据 每行读入一个N 输出描述 对应输出N N的蛇形矩阵 每个数字占3格子 每个蛇形矩阵之间用空行分割 输入样例 3