- 1
- 0
- 约2.76千字
- 约 3页
- 2021-12-11 发布于河北
- 举报
螺旋数组
专业: 09 通信工程
班级: 2 班
姓名: 王忠怀
学号: 20090210420221
所谓螺旋数组,就是指向像
1 2 3 4 5 6 7 8 9 10
36 37 38 39 40 41 42 43 44 11
35 64 65 66 67 68 69 70 45 12
34 63 84 85 86 87 88 71 46 13
33 62 83 96 91 98 89 72 47 14
32 61 82 95 100 99 90 73 48 15
31 60 81 94 93 92 91 74 49 16
30 59 80 79 78 77 76 75 50 17
29 58 57 56 55 54 53 52 51 18
28 27 26 25 24 23 22 21 20 19
这样的数组 .
这是一个 10 阶的螺旋数组。那么如何使用 c 语言来实现这样的螺旋数组的输出
呢?
分析方法如下:
一.算法分析:
以 3 阶为例:
1 2 3
8 9 4
7 6 5
转化成数组就是:
a00 a01 a02
a10 a11 a12
a20 a21 a22
看一下规律:
1. a00 a01 a02 →
2. a12 a22 ↓
3. a21 a20 ←
4. a10 ↑
5. a11 →
第 1 步是 ( →) 写的,就是一个循环写完
第 2 步是 ( ↓) 写的,列号 (2) 是跟第 1 步的最后一个数 a02 的列号相同
第 3 步是 ( ←) 写的,行号 (2) 是跟第 2 步的最后一个数 a22 的行号相同
第 4 步是 ( ↑) 写的,列号 (0) 是跟第 3 步的最后一个数 a20 的列号相同
到此一个大循环结束。
从第 5 步开始,就重复以上循环
二 . 算法设计:
对于 1 、2 阶的矩阵,大循环 1 次
对于 3 、4 阶的矩阵,大循环 2 次
……
所以 n 、n+1 阶矩阵,大循环的次数应该是 ( n + 1 )/2
也可以这样理解 :
第 1 个子循环:就像普通的循环就可以了
第 2 个子循环:记下最后的列号,行号依次加 1
第 3 个子循环,记下最后的行号,列号依次减 1
第 4 个子循环,记下最的的列号,行号依次减 1
三.程序实现
程序代码为:
#include stdio.h
// 宏定义,定义螺旋矩阵的阶数,要想改变数组的阶数,只需在改变 N 的
值即可
#define N
main()
{
原创力文档

文档评论(0)