zoukankan      html  css  js  c++  java
  • 输出螺旋矩阵(三)

    输出这样的二维阵列:

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

    分析:

    填充如此一个n*n阵列 ,先观察规律:

    n=1
    1

    n=2

    1 2
    4 3


    对于n*n阵列,可以先将1-4*n 填充四周,内部用一个(n-2)*(n-2) 的阵列加上4*(n-1)填充,

    所以用递归比较直观,代码如下:

    Private Sub Command1_Click()
    Dim result() As Long, i As Long, maxlen As Long
    For i = 1 To 18
    maxlen = Len(CStr(i * i)) + 1
    spiral i, result
    For j = 0 To i ^ 2 - 1
    If j Mod i = 0 Then Debug.Print
    Debug.Print Right(Space(maxlen) & result(j), maxlen);
    Next
    Debug.Print
    Next
    End Sub

    Sub spiral(ByVal n As Integer, ByRef result() As Long)
    Dim temp() As Long, i As Long, j As Long
    If n = 1 Then
    ReDim result(0)
    result(0) = 1
    End If

    If n = 2 Then
    ReDim result(3)
    result(0) = 1
    result(1) = 2
    result(2) = 4
    result(3) = 3
    End If

    If n > 2 Then
    ReDim result(n ^ 2 - 1)
    For i = 1 To n - 1
    result(i - 1) = i
    result(i * n - 1) = i + n - 1
    result(n * n - i) = i + 2 * (n - 1)
    result(n * n - i * n) = i + 3 * (n - 1)
    Next
    spiral n - 2, temp
    For i = 0 To (n - 2) ^ 2 - 1
    result(n + 1 + n * (i / (n - 2)) + i Mod (n - 2)) = temp(i) + 4 * (n - 1)
    Next

    End If

    End Sub

    输出:

     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    1
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    1
    2
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    4
    3
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    1
    2
    3
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    8
    9
    4
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    7
    6
    5
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    1
    2
    3
    4
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    12
    13
    14
    5
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    11
    16
    15
    6
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    10
    9
    8
    7
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    1
    2
    3
    4
    5
     
     
     
     
     
     
     
     
     
     
     
     
     
    16
    17
    18
    19
    6
     
     
     
     
     
     
     
     
     
     
     
     
     
    15
    24
    25
    20
    7
     
     
     
     
     
     
     
     
     
     
     
     
     
    14
    23
    22
    21
    8
     
     
     
     
     
     
     
     
     
     
     
     
     
    13
    12
    11
    10
    9
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    1
    2
    3
    4
    5
    6
     
     
     
     
     
     
     
     
     
     
     
     
    20
    21
    22
    23
    24
    7
     
     
     
     
     
     
     
     
     
     
     
     
    19
    32
    33
    34
    25
    8
     
     
     
     
     
     
     
     
     
     
     
     
    18
    31
    36
    35
    26
    9
     
     
     
     
     
     
     
     
     
     
     
     
    17
    30
    29
    28
    27
    10
     
     
     
     
     
     
     
     
     
     
     
     
    16
    15
    14
    13
    12
    11
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    1
    2
    3
    4
    5
    6
    7
     
     
     
     
     
     
     
     
     
     
     
    24
    25
    26
    27
    28
    29
    8
     
     
     
     
     
     
     
     
     
     
     
    23
    40
    41
    42
    43
    30
    9
     
     
     
     
     
     
     
     
     
     
     
    22
    39
    48
    49
    44
    31
    10
     
     
     
     
     
     
     
     
     
     
     
    21
    38
    47
    46
    45
    32
    11
     
     
     
     
     
     
     
     
     
     
     
    20
    37
    36
    35
    34
    33
    12
     
     
     
     
     
     
     
     
     
     
     
    19
    18
    17
    16
    15
    14
    13
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    1
    2
    3
    4
    5
    6
    7
    8
     
     
     
     
     
     
     
     
     
     
    28
    29
    30
    31
    32
    33
    34
    9
     
     
     
     
     
     
     
     
     
     
    27
    48
    49
    50
    51
    52
    35
    10
     
     
     
     
     
     
     
     
     
     
    26
    47
    60
    61
    62
    53
    36
    11
     
     
     
     
     
     
     
     
     
     
    25
    46
    59
    64
    63
    54
    37
    12
     
     
     
     
     
     
     
     
     
     
    24
    45
    58
    57
    56
    55
    38
    13
     
     
     
     
     
     
     
     
     
     
    23
    44
    43
    42
    41
    40
    39
    14
     
     
     
     
     
     
     
     
     
     
    22
    21
    20
    19
    18
    17
    16
    15
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
     
     
     
     
     
     
     
    32
    33
    34
    35
    36
    37
    38
    39
    10
     
     
     
     
     
     
     
     
     
    31
    56
    57
    58
    59
    60
    61
    40
    11
     
     
     
     
     
     
     
     
     
    30
    55
    72
    73
    74
    75
    62
    41
    12
     
     
     
     
     
     
     
     
     
    29
    54
    71
    80
    81
    76
    63
    42
    13
     
     
     
     
     
     
     
     
     
    28
    53
    70
    79
    78
    77
    64
    43
    14
     
     
     
     
     
     
     
     
     
    27
    52
    69
    68
    67
    66
    65
    44
    15
     
     
     
     
     
     
     
     
     
    26
    51
    50
    49
    48
    47
    46
    45
    16
     
     
     
     
     
     
     
     
     
    25
    24
    23
    22
    21
    20
    19
    18
    17
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    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
    97
    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
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

  • 相关阅读:
    关于Cocos2d-x开发一个游戏的过程自述
    关于JDK环境变量的配置问题
    lnmp、lamp、lnmpa一键安装包(Updated: 2015-10-25)
    成大事者必备的九种能力、九种手段、九种心态
    燕十八mysql笔记
    cmake 安装 mysql5.5 版本
    IOS 中微信 网页授权报 key[也就是code]失效 解决办法
    js 复制 功能
    php 二维数组排序
    php获取前一天,前一个月,前一年的时间
  • 原文地址:https://www.cnblogs.com/fengju/p/6336341.html
Copyright © 2011-2022 走看看