蛇形方阵

2023-11-18

题目描述:

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

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

输入:

4

输出:

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

解题代码:

#include <iostream>
#include <iomanip>
using namespace std;
int a[100][100], n;
int main() 
{
	a[1][1] = 1;//初始为1
	cin >> n;
	for (int i = 1, j = 1, num = 1; num < n * n;) //此处不能是num <=n * n,不能加等号的原因 
                                                    是:
		                                         //n*n是最后一个数,周围都是数字,加等号后无 
                                                   法跳出循环
	{   //一直填到n*n个数填完
		while (++j <= n && !a[i][j])   //!a[i][j]判断数组是否有数
]		{
			a[i][j] = ++num;
		}
		--j;//向右填充数组

		while (++i <= n && !a[i][j])
		{
			a[i][j] = ++num;
		}
		--i;//向下填充数组
		while (--j > 0 && !a[i][j])
		{
			a[i][j] = ++num;
		}
		++j;//向左填充数组
		while (--i > 0 && !a[i][j])
		{
			a[i][j] = ++num;
		}
		++i;//向上填充数组
	}
	for (int i = 1; i <= n; ++i)
	{
		for (int j = 1; j <= n; ++j)
		{
			cout << setw(3) << a[i][j];//输出
		}
		cout << endl;
	}
	return 0;
}

 简洁版

# include <iostream>
# include <iomanip>
using namespace std;
int a[10][10];
int main()
{
	int n;
	cin >> n;
	a[1][1] = 1;
	for(int i=1,j=1,num=1;num<n*n;)
	{
		while (++j <= n && !a[i][j]) a[i][j] = ++num; --j;
		while (++i <= n && !a[i][j]) a[i][j] = ++num; --i;
		while (--j >= 1 && !a[i][j]) a[i][j] = ++num; ++j;
		while (--i >= 1 && !a[i][j]) a[i][j] = ++num; ++i;
	}
	for(int i=1;i<=n;i++)
	{
		for (int j = 1;j<=n;j++)
		{
			cout << setw(3) << a[i][j];
		}
		cout << endl;
	}
	return 0;
}

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

蛇形方阵 的相关文章

  • 刷完这个笔记,18K不能再少了....

    大家好 最近有不少小伙伴在后台留言 得准备年后面试了 又不知道从何下手 为了帮大家节约时间 特意准备了一份面试相关的资料 内容非常的全面 真的可以好好补一补 希望大家在都能拿到理想的薪资和offer 一般技术面试官都会通过自己的方式去考察你
  • 年前去面了 6 家大厂,拿下 5 家 offer,进大厂好像也没有那么难吧......

    前言 十一月份的时候因为换工作的缘故 陆续参加了华为 阿里巴巴 字节跳动 拼多多 百度 Paypal 的社招面试 除了字节跳动流程较长 我主动结束面试以外 其他的都顺利拿到了 Offer 最近时间稍微宽裕点了 写个面经 希望对大家找工作有所
  • Flutter完整开发实战详解(二、 快速开发实战篇)

    作为系列文章的第二篇 继 Flutter完整开发实战详解 一 Dart语言和Flutter基础 之后 本篇将为你着重展示 如何搭建一个通用的Flutter App 常用功能脚手架 快速开发一个完整的 Flutter 应用 我们的目标是 前言
  • 配音工具哪个好?这里有你想知道的答案

    听说你还在为找不到合适的配音工具而烦恼 没关系 我这就来给你支招 其实配音不一定得找专业的录音室 现在许多在线工具也可以帮助你将文字转化为语音 而且 互联网上的配音工具可不少呢 有的可以提供多种语音风格和语调 有的则是可以快速生成语音内容
  • 开发基于序列到序列模型的语音识别系统

    语音识别系统是一种人工智能技术 可以将人类的口语语音转换为可读的文本格式 近年来 随着深度学习技术的不断发展和进步 基于序列到序列模型的语音识别系统逐渐成为了最受欢迎的技术之一 本文将介绍如何利用这种技术开发出高效 准确的语音识别系统 并探
  • 如何把视频转文字?快把这些方法收好

    听说你想找一个好用的视频转文字提取软件 我这边正好有一波精选推荐 毕竟 谁不喜欢将视频中的内容转化为文字 以此方便查阅和编辑呢 让我来点亮你的转文字技能吧 跟我一起探索各种视频转文字提取软件 让你轻松将视频中的对话 演讲或访谈等内容转换为文
  • 从一个程序员的角度看东方甄选“小作文”事件

    最近东方甄选 小作文 风波愈演愈烈 开始小编和观众吵架 后面东方小孙本来想要平息风波 而 摔手机 和泄漏董宇辉薪资待遇有激起更大的风波 导致东方甄选粉丝每天都几万 几十万的下降 作为一个消费者 开始是不太能理解东方甄选的这些骚操作 东方甄选
  • 在线客服系统中的全渠道服务:多渠道整合与无缝沟通体验

    很多采购人员在了解在线客服系统的时候都会遇到一个名词 全渠道 很多人第一次接触可能并不理解它是什么意思 也不知道自己的企业是否需要这个 全渠道 今天这篇文章就为大家解答一二 一 全渠道是什么 全渠道 Omni Channel 就是企业为了满
  • Zoho Mail:1600万企业用户的信赖之选

    Zoho Mail和Workplace在线办公套件一起 已经成长为一个集邮箱 即时通讯 生产力工具于一身的非常全面的强大平台 经过数十年持续深入的研发投入 我们的产品可以很好地服务大型企业 这是Zoho创始人斯瑞达 温布在Zoho Mail
  • 为什么要编写测试用例,测试用例写给谁看?

    为什么要编写测试用例 测试用例写给谁看 这个问题看似简单 但却涵盖了一系列复杂的考虑因素 并不太好回答 为了向各位学测试的同学们解释清楚 为什么编写测试用例是至关重要的 我将通过以下5个方面进行展开 1 为什么要写测试用例 2 测试用例写给
  • 在线客服系统中的全渠道服务:多渠道整合与无缝沟通体验

    很多采购人员在了解在线客服系统的时候都会遇到一个名词 全渠道 很多人第一次接触可能并不理解它是什么意思 也不知道自己的企业是否需要这个 全渠道 今天这篇文章就为大家解答一二 一 全渠道是什么 全渠道 Omni Channel 就是企业为了满
  • CSSTree:CSS解析与转换的强大工具集

    CSS作为前端开发中不可或缺的一部分 负责网页的样式和布局 但处理CSS的复杂性常常让开发者感到头疼 为了解决这个问题 CSSTree应运而生 CSSTree是一个基于规范和浏览器实现的工具集 旨在提供快速 详细的CSS解析器 CSS AS
  • CSSTree:CSS解析与转换的强大工具集

    CSS作为前端开发中不可或缺的一部分 负责网页的样式和布局 但处理CSS的复杂性常常让开发者感到头疼 为了解决这个问题 CSSTree应运而生 CSSTree是一个基于规范和浏览器实现的工具集 旨在提供快速 详细的CSS解析器 CSS AS
  • 外包干了3个月,技术退步明显.......

    先说一下自己的情况 大专生 18年通过校招进入武汉某软件公司 干了接近4年的功能测试 今年年初 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了2年的女朋友
  • 如何查看崩溃日志

    目录 描述 思路 查看ipa包崩溃日志 简单查看手机崩溃信息几种方式 方式1 手机设置查看崩溃日志 方式2 Xocde工具 方式3 第三方软件克魔助手 环境配置 实时日志 奔溃日志分析 方式四 控制台资源库 线上崩溃日志 线上监听crash
  • HarmonyOS 基于eTS高效开发HarmonyOS课程类应用

    随着HarmonyOS 3 0 Beta版的发布 API Version 8新增了大批JS eTS API接口 相信很多开发者已经迫不及待想体验基于eTS的HamronyOS应用开发 本期Codelab 我们将基于API Version 8
  • 2024诸多大厂春招提前启动!Android的程序员还在等什么

    春招 提前批 已开 xdm别打瞌睡了 格力 顺丰 酷狗 沃尔玛中国 理想 科大讯飞等开启春招 开始收简历了 还有hc的企业提前抢人 春招时间短 节奏快 招满即止 就算挂了也绝不能不投 对企业来说 秋招和春招都是储备人才的黄金时期 春招中 除
  • 做好这几件事,30岁的你也能转行鸿蒙(HarmonyOS)?

    当你年过30 不管你愿不愿意承认 你的精力都在走下坡路 25岁熬一个通宵能写出来的代码 30岁有可能需要一整天 当然你也可以选择不拼精力和体力 当自身的一线经验积累到一定程度后 就会选择慢慢过渡到管理者的角色 通过经验分享及任务分配来参与项
  • 不要再苦苦寻觅了!AI 大模型面试指南(含答案)的最全总结来了!

    AI 大模型技术经过2023年的狂飙 2024年必将迎来应用的落地 对 IT 同学来讲 这里蕴含着大量的技术机会 越来越多的企业开始招聘 AI 大模型岗位 本文梳理了 AI 大模型开发技术的面试之道 从 AI 大模型基础面 AI 大模型进阶
  • 「优选算法刷题」:快乐数

    一 题目 编写一个算法来判断一个数 n 是不是快乐数 快乐数 定义为 对于一个正整数 每一次将该数替换为它每个位置上的数字的平方和 然后重复这个过程直到这个数变为 1 也可能是 无限循环 但始终变不到 1 如果这个过程 结果为 1 那么这个

随机推荐

  • 电源学习总结(二)——线性稳压主要特点及原理

    文章目录 主要特点 内部结构 常见的三端线性稳压 AMS1117 主要特点 线性稳压最为突出的优点主要有成本低 噪声低 体积小 由于线性稳压结构简单 生产相对容易 因此其生产成本可以很低 同时其需要的外围器件也很少 一般只需要在输入端和输出
  • 【Python】教你写一个一键上传git的脚本(打包成exe)

    本篇博客来教你用Python写一个简单的git自动上传脚本 前言 为什么需要一个这样的东西 有的时候 我的学习代码其实没啥好commit的 写一个自动上传的脚本 就可以自动执行完所有的命令 而不需要自己手动进行git三板斧操作 项目代码已开
  • unplugin-vue-components 源码原理分析

    unplugin vue components 是一款按需自动导入Vue组件的库 支持 Vue2 和 Vue3 同时支持组件和指令 使用此插件库后 不再需要手动导入组件 插件会自动识别按需导入组件以及对应样式 我们只需要像全局组件那样使用即
  • 【笔记】SemGCN

    一 论文总结 1 1 核心贡献 提出了一种改进的图卷积操作 称为语义图卷积 SemGConv 它源自cnn 其关键思想是学习图中暗示的边的信道权值 然后将它们与核矩阵结合起来 这大大提高了图卷积的能力 其次 我们引入了SemGCN 其中Se
  • Unity PlayerPrefs(数据持久化)

    PlayerPrefs Unity3D中的数据持久化是以键值的形式存储的 可以看作是一个字典 Unity3D中值是通过键名来读取的 当值不存在时 返回默认值 目前Unity3D中只支持int string float三种数据类型的读取 参考
  • android开发工具!Android性能优化常见问题,灵魂拷问

    前言 今年上半年其实就已经有了换工作的想法 奈何疫情原因和岗位缩减 加之信心不足 到六月底投递了百度的Android岗位 本以为像我这种非211 985没工作经验的渣渣只能被直接pass 结果却意外的收到了电话 真是受宠若惊 经过电面 技术
  • 51单片机入学第八课——8*8点阵屏

    文章目录 LED点阵屏 点阵屏电路图 74HC595芯片 串入并出 使用方法 编程 点亮一个点 显示汉字 PCtoLCD 2002 编写代码 总结 LED点阵屏 LED点阵屏和数码管工作都是是靠二极管发光 但工作原理与矩阵键盘有些类似 在后
  • springboot2.0整合logback日志(详细)

    一 近期自己的项目想要一个记录日志的功能 而springboot本身就内置了日志功能 然而想要输入想要的日志 并且输出到磁盘 然后按天归档 或者日志的切分什么的 自带的日志仅仅具有简单的功能 百度了一番 总结如下 适合大多数的应用场景 二
  • python线程池ThreadPoolExecutor使用

    假设我们必须多线程任务创建大量线程 由于线程太多 因此可能会有很多性能问题 这在计算上会是最昂贵的 一个主要问题可能是吞吐量受限 我们可以通过创建一个线程池来解决这个问题 一个线程池可以被定义为一组预先实例化和空闲的线程 它们随时可以开始工
  • 微信小程序请求库的封装方法

    1 文档地址 微信官方文档 wx request网络请求 2 项目使用 根目录下新建utils gt request js 作为请求通用库 接口地址 const DEV URL http localhost 22667 const PROD
  • 常用python程序

    压缩文件 import zipfile import os def zipDir dirpath outFullName 压缩指定文件夹 param dirpath 目标文件夹路径 param outFullName 压缩文件保存路径 xx
  • linux环境用opencv读取图片,基于Linux下OpenCV的人脸识别模块设计

    金笑雪 张琳琳 高丹 张黎 摘 要 近年来 图像识别技术正在向更加直观 可靠的方向发展 其中人脸识别技术具有极高的研究价值 应用得也最为广泛 通过对Linux系统下OpenCV的研究 利用OpenCv Python3 4设计出一个图像识别系
  • OpenWRT添加模块(一)Makefile和Config.in

    第一次接触到openwrt 真是被毁三观啊 不要说makefile 连源代码在哪里都找不到 知道嵌入式系统水深 没想到迈出第一步就没过了脖子 好在旁边有人指点 直接在芯片厂商提供的既有代码上做二次开发 项目进展倒也完全满足了前期计划的目标
  • Linux基础笔记

    第一章 一 网络配置 网络三要素 ip地址 子网掩码 255 255 255 0 网关 ifconfig 查看网络 hostname 查看本机名称 hostname 更改主机名 etc hosts 网络映射配置文件 etc sysconfi
  • 【使用TensorRT自带的plugin】

    0 背景 在之前的文章TensorRT的plugin实现中介绍了 如何从零实现一个TensorRT的plugin 这篇文章来介绍如何使用TensorRT自带的plugin 将其添加到Network Definition中加速我们的模型 自T
  • js延时案例

    例子 setTimeout function gift css display block 3000 js延迟函数delay的使用 const delay ms gt new Promise resolve reject gt setTim
  • Unity 场景烘焙原理

    一 基础四种烘焙方式 1 静态灯光下静态物体烘焙 2 静态灯光下动态物体烘焙 3 动态灯光下静态物体烘焙 4 动态灯光下动态物体烘焙 二 实现方法 1 静态灯光下静态物体烘焙设置如下 灯光类型设置为Baked模式 模型预设右上角设置为Sta
  • 用Python实现链表

    摘要 在C C 语言中 常用结构体 指针来实现链表 而在Python语言中 使用类 class 来实现链表 一 创建节点 Node 链表由多个节点 Node 组成 而每个节点都有两要素组成 1 value 该节点的值 2 next 指向下一
  • 3-1.vue的组件component:组件的基本使用

    3 1 vue的组件component 组件的基本使用标题 vue组件的作用 组件的含义其实就是对一些功能进行封装 vue的项目开发都是以组件化的形式去开发的 一个项目一般都是划分成多个组件 然后拼接而成的 1 代码展示 最原始的实现方式
  • 蛇形方阵

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