螺旋矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如此循环。

5×5的螺旋矩阵如图所示。

  • 每次从左往右走,都是从left走向right,结束后up++

  • 每次从上往下走,都是从up走向down,结束后right--

  • 每次从右往左走,都是从right走向left,结束后down--

  • 每次从下往上走,都是从down走向up,结束后left++

所以,螺旋矩阵的填充每次循环分为4步;左→右、上→下、右→左、下→上,直到down>up或right>left结束循环。

输出10×10的螺旋矩阵代码如下:

#define n 10#include <stdio.h>int main()
{int arr[n][n] = { 0 };int num = 1;int up = 0;int down = n - 1;int left = 0;int right = n - 1;int i = 0;int j = 0;while (up <= down && left <= right){//左→右for (j = left; j <= right; j++){arr[up][j] = num++;}up++;//上→下for (i = up; i <= down; i++){arr[i][right] = num++;}right--;//右→左for (j = right; j >= left; j--){arr[down][j] = num++;}down--;//下→上for (i = down; i >= up; i--){arr[i][left] = num++;}left++;}for (i = 0; i < n; i++){for (j = 0; j < n; j++){printf("%3d ", arr[i][j]);}printf("\n");}return 0;
}

运行结果如图:

【常用算法】螺旋矩阵相关推荐

  1. 常考数据结构与算法:螺旋矩阵m*n

    题目描述 给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素. 解题思路: 使用计算输出的方法,先处理上面一行,再处理右面一列,再处理下面一行,再处理左边一列,这是一个处理流 ...

  2. 数据结构与算法--螺旋矩阵

    题目:给你一个正整数 n ,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix .(来源:https://leetcode-cn.com/pro ...

  3. 用python做算法_自己用python写的螺旋矩阵生成算法

    自己用python写的螺旋矩阵生成算法 如果输入6,可以生成如下矩阵: 1 20 19 18 17 16 2 21 32 31 30 15 3 22 33 36 29 14 4 23 34 35 28 ...

  4. 【LeetCode-面试算法经典-Java实现】【054-Spiral Matrix(螺旋矩阵)】

    [054-Spiral Matrix(螺旋矩阵)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a matrix of m x n elements (m ...

  5. 用java实现螺旋矩阵算法

    用java实现螺旋矩阵算法 一.思路讲解 刚拿到这道题的时候想的是一圈一圈的实现一个螺旋矩阵,但我觉得那样的方法太麻烦了,在网上看到一个大佬的算法觉得挺好的,自己总结了一下,拿出来给大家分享分享. 这 ...

  6. 代码随想录算法训练营第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II。

    代码随想录算法训练营第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II. 977.有序数组的平方 209. 长度最小的子数组 59. 螺旋矩阵 II 977.有序数组的 ...

  7. 代码随想录算法训练营第二天 | LeetCode 977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵II

    目录 一.今日心得感悟 1.数组从小到大排序 ①冒泡法--时间复杂度:O(nlogn) ②使用排序函数qsort--时间复杂度:O(nlogn) ③两端->中间(双指针法) --时间复杂度:O( ...

  8. 代码随想录算法训练营第二天|leetcode 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

    leetcode 977.有序数组的平方 想到昨天写的双指针,十分刻意用了一下,感觉还是比较生疏,还得加强练习和思考,然后发现还需要排序,想到了vector的排序sort(),但是觉得直接用不好,也忘 ...

  9. 代码随想录算法训练营第二天 | 力扣977.有序数组的平方,209.长度最小的子数组,59.螺旋矩阵II

    代码随想录算法训练营第二天 | 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II 977.有序数组的平方 题目链接:有序数组的平方 题目描述: 给你一个按 非递减顺序 排序的整 ...

最新文章

  1. Bert需要理解的一些内容
  2. setuid与capability
  3. [动态库]动态库生成和使用以及Makefile编写
  4. [Go]通道(channel)的基本操作
  5. 鸿蒙os 2.0跑分,预装鸿蒙OS 2.0!华为MatePad Pro2跑分曝光:麒麟9000、8GB内存
  6. C语言里 指针变量强制类型转换,C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)...
  7. c#中的long类型示例_C#中带示例的带符号字节数组
  8. mysql mongodb b树_为何Mongodb索引用B树,而Mysql用B+树?
  9. 真正的Maven经常使用命令
  10. MSP430之自动增益程控放大main备份
  11. 得力计算机无法开机,得力针式打印机常见问题及解决方法
  12. 3.4 常用数据类型的输入 [原创Excel教程]
  13. 服务器断开消息,Websockets - 断开服务器消息
  14. 使用Element对话框
  15. word如何插入和删除脚注,尾注
  16. 用Python爬了我的微信好友,他们是这样的...
  17. STM32+ESP8266获取时间和天气
  18. Android实现百度地图定位(墨雪亲测)
  19. Oracle-SQL中日期加减一年的写法
  20. arm linux 工控,基于ARM和Linux通用工控平台设计 - ARM - 电子发烧友网

热门文章

  1. c语言n1.n2%,C语言题库填空.doc
  2. ArcCatalog发布地图服务
  3. 自动化小工具---秒级倒计时
  4. uniapp使用横竖屏显示样式错乱问题。
  5. 大二(上)离散数学 主析取范式与主合取范式
  6. Java窗体边框颜色_【转】窗口效果,带边框、不带边框、设定窗口边框颜色
  7. 集群介绍+用keepalived配置高可用集群(总结)
  8. python写桌面软件如何实现自动升级
  9. 如何实现外网访问erp系统软件?快解析端口映射
  10. IC自媒体访谈:吾爱IC社区