|
楼主 |
发表于 2022-11-11 13:15
|
显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
老窖好,以前学过你的背包。lee,法师,香川几个都不来了,就你在呢,我关注的你们几个。
我那15年前互相有好感的女生,现在根本不理睬我,拉黑我,我就想知道她结婚了没有,我发送微信加好友请求就跟骚扰她一样。
你说的概率相等,意思是10个2,10个3,10个4.。。。。。。。。。?都是10个?
看到老窖回复挺高兴的,发一下十六宫格代码,一年前写的,有个bug是运行11次代码报错,懒得修复bug了,生活太烦了。
lee曾说过做过一千个九宫格,她可能估计的夸张了,她可能写了有几十个九宫格。
Sub 九宫格()
t0 = Timer
Dim ar, br
[a1:i9].Clear
x = 16
ReDim ar(1 To x, 1 To x), br(1 To x, 1 To 1)
For i = 1 To x
br(i, 1) = i
Next
For j = 1 To x
For i = 1 To x
r = Int(Rnd() * x) + 1
t = br(i, 1): br(i, 1) = br(r, 1): br(r, 1) = t
Next
For i = 1 To x
For n = 1 To x '这里注意8,难点
flag = 1
For k = 1 To j - 1
'Debug.Print i, k, n, ar(i, k), br(n, 1)
If ar(i, k) = br(n, 1) Or ar(n, k) = br(i, 1) Then
flag = 0
Exit For
End If
Next
If flag = 1 Then
ar(i, j) = br(n, 1)
ar(n, j) = br(i, 1)
t = br(i, 1): br(i, 1) = br(n, 1): br(n, 1) = t
Exit For
End If
Next
If n = x + 1 Then
For ma = 1 To x
If ma <> ty Then
For mb = 1 To j - 1
If ar(ma, mb) = br(i, 1) Then
Exit For
End If
Next
If mb = j Then
ar(ma, j) = br(i, 1)
ar(i, j) = br(ma, 1)
t = br(i, 1): br(i, 1) = br(ma, 1): br(ma, 1) = t
i = i - 1
ty = ma
Exit For
End If
End If
Next
End If
Next
Next
[a1].Resize(x, x) = ar
[x1] = Format(Timer - t0, "0.000s")
End Sub |
|