设为首页收藏本站

SKY外语、计算机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3011|回复: 1
打印 上一主题 下一主题

VB_杨晖三角和蛇形矩阵

[复制链接]

16

主题

0

好友

216

积分

中级会员

Rank: 3Rank: 3

生肖
性别

最佳新人 论坛元老

跳转到指定楼层
楼主
发表于 2012-4-28 21:33:44 |只看该作者 |倒序浏览
本帖最后由 fieldmax 于 2012-4-28 22:17 编辑

  1. Public Enum DirectionEnum
  2.     ToRight = 0
  3.     ToDown = 1
  4. End Enum

  5. Sub zMatrix(X As Long, Y As Long, Optional Direction As DirectionEnum = 0)
  6. 蛇形矩阵

  7. Dim iX As Long
  8. Dim iY As Long
  9. Dim n As Long
  10. Dim DT As DirectionEnum
  11. ReDim mat(1 To X, 1 To Y) As Long
  12. DT = Direction
  13. iX = 1
  14. iY = 1
  15. n = 1
  16. mat(1, 1) = 1
  17. Do While n < X * Y
  18.     n = n + 1
  19.     If DT = 0 And (iY = 1 Or iX = X) Then
  20.         If iX < X Then
  21.             iX = iX + 1
  22.         Else
  23.             iY = iY + 1
  24.         End If
  25.         DT = 1
  26.     ElseIf DT = 1 And (iX = 1 Or iY = Y) Then
  27.         If iY < Y Then
  28.             iY = iY + 1
  29.         Else
  30.             iX = iX + 1
  31.         End If
  32.         DT = 0
  33.     ElseIf DT = 0 Then
  34.         iX = iX + 1
  35.         iY = iY - 1
  36.     ElseIf DT = 1 Then
  37.         iX = iX - 1
  38.         iY = iY + 1
  39.     End If
  40.     mat(iX, iY) = n
  41. Loop

  42. '打印部分
  43. Dim TempTx As String
  44. For iY = 1 To Y
  45.     For iX = 1 To X
  46.         If mat(iX, iY) >= 1000 Then
  47.             TempTx = TempTx & " " & mat(iX, iY)
  48.         ElseIf mat(iX, iY) >= 100 Then
  49.             TempTx = TempTx & "  " & mat(iX, iY)
  50.         ElseIf mat(iX, iY) >= 10 Then
  51.             TempTx = TempTx & "   " & mat(iX, iY)
  52.         Else
  53.             TempTx = TempTx & "    " & mat(iX, iY)
  54.         End If
  55.     Next
  56.     Print TempTx & vbCrLf
  57.     TempTx = ""
  58. Next
  59. End Sub

  60. Sub yhSj(C As Integer)
  61. '杨晖三角
  62. ReDim Tx(C, C) As Long
  63. Dim TempTe As String
  64. Dim iX As Integer
  65. Dim iY As Integer
  66. Tx(0, 0) = 1
  67.     For iY = 1 To C
  68.         For iX = 1 To iY
  69.             Tx(iX, iY) = Tx(iX - 1, iY - 1) + Tx(iX, iY - 1)
  70.             If Tx(iX, iY) >= 100 Then
  71.                 TempTx = TempTx & Tx(iX, iY) & " "
  72.             ElseIf Tx(iX, iY) >= 10 Then
  73.                 TempTx = TempTx & Tx(iX, iY) & "  "
  74.             Else
  75.                 TempTx = TempTx & Tx(iX, iY) & "   "
  76.             End If
  77.         Next
  78.         Print TempTx
  79.         TempTx = ""
  80.     Next
  81. End Sub
复制代码
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
分享淘帖0 收藏收藏0 评分评分

4

主题

2

好友

201

积分

中级会员

Rank: 3Rank: 3

生肖
星座
天蝎座
性别

最佳新人 活跃会员 论坛元老

沙发
发表于 2012-4-29 05:24:06 |只看该作者
本帖最后由 sky_yx 于 2015-12-30 14:23 编辑

好久没用VB,再次看到这熟悉的代码,很有感触啊

回复

使用道具 评分 举报

您需要登录后才可以回帖 登录 | 立即注册


手机版|SKY外语计算机学习 ( 粤ICP备12031577 )    

GMT+8, 2024-4-28 08:43 , Processed in 0.117059 second(s), 26 queries .

回顶部