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
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

  • 相关阅读:
    网上常见的分享功能, 比如 点击分享到 人人 微博 空间 等都是怎么做的...
    qq客服代码实现过程
    cnzz友盟怎么安装网站统计代码监控网站流量
    本地部署151688过程记录
    本地部署151688过程记录20110526
    梦里秦淮:互联网商业模式≠成功
    要远离这些平台网站
    阿里旺旺新老版本共存
    豆皮拖鞋穿著確實感覺不太舒服,磨腳,好看是好看,還是沒有哥倫比亞好
    深圳批发市场有哪些好的呢?
  • 原文地址:https://www.cnblogs.com/fengju/p/6336341.html
Copyright © 2011-2022 走看看