输出螺旋矩阵(一)

输出这样的二维阵列:

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

 

Private Sub Command1_Click()
spiral 17
Debug.Print
spiral 18
End Sub

Sub spiral(ByVal n As Integer)
Dim temp() As Long, i As Long, j As Long, start As Long, maxlen As Long
ReDim temp(1 To n, 1 To n)
If n Mod 2 = 1 Then temp(n / 2 + 1, n / 2 + 1) = n ^ 2
For i = 1 To n / 2
start = 4 * (i - 1) * (n + 1 - i)
For j = i To n - i
temp(i, j) = start + j - i + 1
temp(j, n + 1 - i) = start + (n - 2 * i + 1) + j - i + 1
temp(n + 1 - i, n + 1 - j) = start + 2 * (n - 2 * i + 1) + j - i + 1
temp(n + 1 - j, i) = start + 3 * (n - 2 * i + 1) + j - i + 1
Next
Next
maxlen = Len(CStr(n * n)) + 1
For i = 1 To n
For j = 1 To n
Debug.Print Right(Space(maxlen) & temp(i, j), maxlen);
Next
Debug.Print
Next
End Sub

返回

   1     2      3     4      5      6      7     8     9     10    11    12   13   14   15   16  17
  64   65   66   67   68    69    70   71   72   73    74    75   76   77   78   79  18
  63 120 121 122 123 124 125 126 127 128 129 130 131 132 133  80  19
  62 119 168 169 170 171 172 173 174 175 176 177 178 179 134  81  20
  61 118 167 208 209 210 211 212 213 214 215 216 217 180 135  82  21
  60 117 166 207 240 241 242 243 244 245 246 247 218 181 136  83  22
  59 116 165 206 239 264 265 266 267 268 269 248 219 182 137  84  23
  58 115 164 205 238 263 280 281 282 283 270 249 220 183 138  85  24
  57 114 163 204 237 262 279 288 289 284 271 250 221 184 139  86  25
  56 113 162 203 236 261 278 287 286 285 272 251 222 185 140  87  26
  55 112 161 202 235 260 277 276 275 274 273 252 223 186 141  88  27
  54 111 160 201 234 259 258 257 256 255 254 253 224 187 142  89  28
  53 110 159 200 233 232 231 230 229 228 227 226 225 188 143  90  29
  52 109 158 199 198 197 196 195 194 193 192 191 190 189 144  91  30
  51 108 157 156 155 154 153 152 151 150 149 148 147 146 145  92  31
  50 107 106 105 104 103 102 101 100   99   98   97    96    95   94  93  32
  49  48     47    46   45   44   43    42   41   40   39   38    37    36   35  34  33

   1      2      3    4      5      6      7      8      9    10    11   12    13  14   15    16  17  18
  68   69   70   71    72   73   74    75    76   77   78   79    80   81   82    83  84  19
  67 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142  85  20
  66 127 180 181 182 183 184 185 186 187 188 189 190 191 192 143  86  21
  65 126 179 224 225 226 227 228 229 230 231 232 233 234 193 144  87  22
  64 125 178 223 260 261 262 263 264 265 266 267 268 235 194 145  88  23
  63 124 177 222 259 288 289 290 291 292 293 294 269 236 195 146  89  24
  62 123 176 221 258 287 308 309 310 311 312 295 270 237 196 147  90  25
  61 122 175 220 257 286 307 320 321 322 313 296 271 238 197 148  91  26
  60 121 174 219 256 285 306 319 324 323 314 297 272 239 198 149  92  27
  59 120 173 218 255 284 305 318 317 316 315 298 273 240 199 150  93  28
  58 119 172 217 254 283 304 303 302 301 300 299 274 241 200 151  94  29
  57 118 171 216 253 282 281 280 279 278 277 276 275 242 201 152  95  30
  56 117 170 215 252 251 250 249 248 247 246 245 244 243 202 153  96  31
  55 116 169 214 213 212 211 210 209 208 207 206 205 204 203 154  97  32
  54 115 168 167 166 165 164 163 162 161 160 159 158 157 156 155  98  33
  53 114 113 112 111 110 109 108 107 106 105 104 103 102 101 100  99  34
  52    51   50   49   48   47    46   45   44    43    42   41   40    39   38   37  36  35

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值