洛谷P5731——蛇形方阵(c++)

2023-11-17

题目描述

给出一个不大于 9 的正整数 n,输出 n×n 的蛇形方阵。

从左上角填上 1 开始,顺时针方向依次填入数字,如同样例所示。注意每个数字有都会占用 3 个字符,前面使用空格补齐。

输入格式

输入一个正整数 n,含义如题所述。

输出格式

输出符合题目要求的蛇形矩阵。

输入输出样例

输入 #1

4

输出 #1

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

说明/提示

数据保证,1≤n≤9。

这道题的目标是输出一个n行n列的蛇形方阵,思路是把向上、向下、向左、向右的四种情况一一列举出来。步骤如下:

1、定义数据

2、输入数据

3、循环判断并构造蛇形方阵

4、循环输出蛇形方阵

总结一下:这道题的关键点就是把向上、向下、向左、向右的四种情况一一列举出来再去构造。

代码如下:

#include <bits/stdc++.h>
using namespace std;
//也可由直接写成num[26][26] 
const int maxn=26;
//#define maxn 26 (与第四行意义相同) 
int main()
{
	//定义变量 
	int x,y,n,count=1;
	//数组初始化为0 
	int num[maxn][maxn]={};
	//输入n 
	cin >> n;
	//确定第一个数的坐标 
	x=0; y=n-1;
	//写入第一个数 
	num[x][y]=1;
	//写入2--n*n 
	for (;count<n*n;)
	{
		//上、下、左、右四种情况列举判断 
		while (x-1>=0 && !num[x-1][y]) num[--x][y]=++count;	//向上 
		while (x+1<n && !num[x+1][y]) num[++x][y]=++count;	//向下 
		while (y-1>=0 && !num[x][y-1]) num[x][--y]=++count;	//向左 
		while (y+1<n && !num[x][y+1]) num[x][++y]=++count;	//向右 
	}
	for (x=0;x<n;x++)
	{
		for (y=0;y<n;y++)
			printf("%4d",num[x][y]);
			//构造矩阵每输出完一行就得换一次行 
		printf("\n");
	}
	return 0;
}

感谢观看,请多多点赞关注,您的点赞和关注是我创作的动力

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

洛谷P5731——蛇形方阵(c++) 的相关文章

  • 用 C++ 进行服装建模 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在编写一些软件 最终会绘制一个人体框架 可以配置各种参数 并且计划是在假人身上放置某种衣服 我研究
  • 在 C# 中创建具有单独列的分隔文本

    我一直在尝试在 C 中创建一个制表符限制的文本文件 以便数据正确显示在单独的列中 Firstname Lastname Age John Smith 17 James Sawyer 31 我尝试过 t 字符 但我得到的只是 Firstnam
  • 如何检查QProcess是否正确执行?

    QProcess process sdcompare QString command sdcompare QStringList args sdcompare command sdcompare diff args sdcompare lt
  • 向 Nhibernate 发出 SQL 查询

    如何将此 SQL 查询发送给 Nhibernate SELECT Customer name FROM Company INNER JOIN Customer ON Company CompanyId Customer CompanyId
  • 如何为 C 分配的 numpy 数组注册析构函数?

    我想在 C C 中为 numpy 数组分配数字 并将它们作为 numpy 数组传递给 python 我可以做的PyArray SimpleNewFromData http docs scipy org doc numpy reference
  • 将内置类型转换为向量

    我的 TcpClient 类接受vector
  • 互斥体实现可以互换(独立于线程实现)

    所有互斥体实现最终都会调用相同的基本系统 硬件调用吗 这意味着它们可以互换吗 具体来说 如果我使用 gnu parallel算法 使用openmp 并且我想让他们称之为线程安全的类我可以使用boost mutex用于锁定 或者我必须编写自己
  • 单元测试一起运行时失败,单独运行时通过

    所以我的单元测试遇到了一些问题 我不能只是将它们复制并粘贴到这里 但我会尽力而为 问题似乎是 如果我一项一项地运行测试 一切都会按预期进行 但如果我告诉它一起运行测试 则 1 5 将通过 TestMethod public void Obj
  • C++中的类查找结构体数组

    我正在尝试创建一个结构数组 它将输入字符串链接到类 如下所示 struct string command CommandPath cPath cPathLookup set an alarm AlarmCommandPath send an
  • 存储来自其他程序的事件

    我想将其他应用程序的事件存储在我自己的应用程序中 事件示例 打开 最小化 Word 或打开文件时 这样的事可能吗 运行程序 http msdn microsoft com en us library ms813609 aspx and 打开
  • C# Dns.GetHostEntry 不返回连接到 WiFi 的移动设备的名称

    我有一个 C 中的 Windows 窗体应用程序 我试图获取列表中所有客户端的主机名 下面给出的是 ra00l 来自此链接的代码示例 GetHostEntry 非常慢 https stackoverflow com questions 99
  • 未定义的行为或误报

    我 基本上 在野外遇到过以下情况 x x 5 显然 它可以在早期版本的 gcc 下编译干净 在 gcc 4 5 1 下生成警告 据我所知 警告是由 Wsequence point 生成的 所以我的问题是 这是否违反了标准中关于在序列点之间操
  • 在一个字节中存储 4 个不同的值

    我有一个任务要做 但我不知道从哪里开始 我不期待也绝对不想要代码中的答案 我想要一些关于该怎么做的指导 因为我感到有点失落 将变量打包和解包到一个字节中 您需要在一个字节中存储 4 个不同的值 这些值为 NAME RANGE BITS en
  • 如何将自定义 JSON 文件添加到 IConfiguration 中?

    我正在使用 asp net Autofac 我正在尝试加载自定义 JSON 配置文件 并基于该文件创建 实例化 IConfiguration 实例 或者至少将我的文件包含到默认情况下构建的 IConfiguration asp net 中
  • 使用 Moq 使用内部构造函数模拟类型

    我正在尝试模拟 Microsoft Sync Framework 中的一个类 它只有一个内部构造函数 当我尝试以下操作时 var fullEnumerationContextMock new Mock
  • 私有模板函数

    我有一堂课 C h class C private template
  • 为什么在setsid()之前fork()

    Why fork before setsid 守护进程 基本上 如果我想将一个进程与其控制终端分离并使其成为进程组领导者 我使用setsid 之前没有分叉就这样做是行不通的 Why 首先 setsid 将使您的进程成为进程组的领导者 但它也
  • Server.MapPath - 给定的物理路径,预期的虚拟路径

    我正在使用这行代码 var files Directory GetFiles Server MapPath E ftproot sales 在文件夹中查找文件 但是我收到错误消息说 给定物理路径但虚拟路径 预期的 我对在 C 中使用 Sys
  • 有没有办法强制显示工具提示?

    我有一个验证字段的方法 如果无法验证 该字段将被清除并标记为红色 我还希望在框上方弹出一个工具提示 并向用户显示该值无效的消息 有没有办法做到这一点 并且可以控制工具提示显示的时间 我怎样才能让它自己弹出而不是鼠标悬停时弹出 If the
  • 线程和 fork()。我该如何处理呢? [复制]

    这个问题在这里已经有答案了 可能的重复 多线程程序中的fork https stackoverflow com questions 1235516 fork in multi threaded program 如果我有一个使用 fork 的

随机推荐

  • 【开发工具】【Dropbear】Dropbear编译安装

    简介 dropbear 小型的嵌入式系统专用的SSH服务端和客户端工具 服务器端 dropbear dropbearkey 客户端 dbclient dropbear默认使用nsswitch实现名称解析 账户名称 dropbear会在用户登
  • Flutter倒计时定时器

    Timer void countdown Timer timer new Timer new Duration seconds 10 只在倒计时结束时回调
  • 二叉树各种函数的实现

    如果你觉得迷茫 那就尽可能选择比较困难的路 目录 前言 一 通过前序遍历创建二叉树 二 二叉树的四种遍历 1 二叉树的前序遍历 2 二叉树的中序遍历 3 二叉树的后序遍历 4 二叉树的层序遍历 三 二叉树的结点个数 四 二叉树的叶子结点的个
  • Linux查看当前目录及子目录大小

    du h max depth 1 var lib docker 查看 var lib docker 目录及该目录直接子目录各文件及文件夹大小 查看效果如下图 改变 max depth 1 中的数值大小就可以指定查看该目录下多少级子目录 例如
  • Oracle---day03

    一 视图 对一个查询结果的封装 视图里面所有的数据都是来自于它查询的那张表 视图里面不存储任何数据 视图的好处 1 能够封装复杂的查询结果 2 屏蔽表中的细节 语法 create or replace view 视图名字 as 查询语句 w
  • 【Python】斐波那契数列之兔子问题

    目录 兔子问题 1 1 问题描述 1 2 问题分析 1 3 解决实现 兔子问题 1 1 问题描述 斐波那契在计算之书中 提出了一个有趣的兔子问题 若一对成年兔子每个月恰好生下一对小兔子 一雌一雄 在年初时只有一对小兔子 在第一个月结束时 他
  • linux No module named yum错误的解决办法

    linux No module named yum错误的解决办法 肯定是yum的版本与当前python的版本不一致造成的 所以修改yum的配置 修改文件 vim usr bin yum 修改头 usr bin python gt usr b
  • STM32擦除Flash失败

    stm32 Flash擦除错误 环境 keil5 stm32f4 rtthread3 15 现象 擦除flash总是失败 经过jlink调试发现PGPERR位总是1 经过一番折腾 在st社区找到答案 链接 https community s
  • Button点击事件绑定中如何传递带参数的方法

    btn onClick AddListener delegate this OnBtnClick true 传递一个有参数的方法用于传递参数 这样点击事件就能接收参数了 using UnityEngine using UnityEngine
  • 华为OD机试真题- 计算误码率-2023年OD统一考试(B卷)

    题目描述 误码率是最常用的数据通信传输质量指标 它可以理解为 在多少位数据中出现一位差错 移动通信网络中的误码率主要是指比特误码率 其计算公式如下 比特误码率 错误比特数 传输总比特数 为了简单 我们使用字符串来标识通信的信息 一个字符错误
  • CSS布局之使用Flex布局画骰子(3点)

    若无基础 请优先阅读学习此文档阮一峰 Flex 布局教程 语法篇 上一篇文章CSS布局之使用Flex布局画骰子 2点 这次画3个点的骰子 大家可以先看图片默写代码 然后与文中代码做校验 来验证自己是否理解了Flex布局 骰子样式 div c
  • 笔试

    给定两个字符串s1和s2 如果s1删除若干个字符后变成s2 则称s2为s1的子串 求s2在s1中的起始位置的最大值 输入描述 只有一行 s1 s2 s1和s2用空格隔开 s1和s2度不会含有空格 s1和s2的长度均大于1且小于256 输出描
  • python实战故障诊断之CWRU数据集(三):信号预白化处理-倒谱预白化(CEP pre-whitening)

    文章目录 1 概述 2 倒频谱预白化原理 2 1 倒频谱 2 2 基于倒频谱的预白化处理 3 代码实现 1 概述 在轴承故障中 故障信号通常较为微弱 很可能被设备周期性运转产生的强周期性信号所淹没 导致无法准确识别故障 这时我们需要用到信号
  • PCL .vtk文件与.pcd的相互转换

    目录 一 概述 二 VTK转PCD 三 PCD转VTK 四 实验数据 一 概述 多边形数据集vtkPolyData由顶点 多顶点 线 折线和三角形地带等单元组成 顶点 线和多边形构成了用来表达0 1和2维几何图形的基本要素的最小集合 vtk
  • KubeSphere中集成ApiSix

    KubeSphere中集成ApiSix 一 Apache APISIX 介绍 Apache APISIX 是一款开源的高性能 动态云原生网关 由深圳支流科技有限公司于 2019 年捐赠给 Apache 基金会 当前已经成为 Apache 基
  • java装饰器模式

    一 装饰器模式定义 1 动态地给一个对象添加一些额外的职责 就增加功能来说 装饰模式相比生成子类更为灵活 Component抽象构件 Component是一个接口或者是抽象类 就是定义我们最核心的对象 也就是最原始的对象 定义一个对象接口可
  • Python运行不了,无法运行Python解决办法(超全面)

    前言 Python是一门广泛使用的编程语言 但在使用过程中 我们可能会遇到无法运行Python的问题 本文将提供一个超全面的解决方案 帮助读者排除常见的Python运行问题 并提供相应的解决办法 帮助Python学习 以下所有学习资料文末免
  • tensorflow安装教程(一般使用国内的清华源进行安装)

    注 安装tensorflow numpy这些源 记得用国内的清华镜像源 国外的源由于网络延迟无法安装 1 国内安装tensorflow的命令 pip install index url https pypi douban com simpl
  • 法拉克机器人自动怎么调_发那科机器人的简单设置你知道吗

    发那科机器人使用后台逻辑时 可以在后台执行只包含对应后台逻辑指令的TP程序 程序从 初到 后被反复执行 该执行不受急停 暂停 报警的影响 设定后台逻辑的步骤非常简单 1 按下MENU键 2 选择SETUP 3 选择BG LOGIC 进入如下
  • 洛谷P5731——蛇形方阵(c++)

    题目描述 给出一个不大于 9 的正整数 n 输出 n n 的蛇形方阵 从左上角填上 1 开始 顺时针方向依次填入数字 如同样例所示 注意每个数字有都会占用 3 个字符 前面使用空格补齐 输入格式 输入一个正整数 n 含义如题所述 输出格式